aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBaptiste Daroussin <bapt@FreeBSD.org>2016-10-06 21:30:09 +0000
committerBaptiste Daroussin <bapt@FreeBSD.org>2016-10-06 21:30:09 +0000
commitaa7798c94fa57f6c00fab4393c9fe91334864371 (patch)
tree61b5a60e9c086b1ba44b4718e7666304a8edab6f
downloadsrc-aa7798c94fa57f6c00fab4393c9fe91334864371.tar.gz
src-aa7798c94fa57f6c00fab4393c9fe91334864371.zip
Import heirloom doctools snapshot from git as of 161006vendor/heirloom-doctools/20161006
Notes
Notes: svn path=/vendor/heirloom-doctools/dist/; revision=306788 svn path=/vendor/heirloom-doctools/20161006/; revision=306789; tag=vendor/heirloom-doctools/20161006
-rw-r--r--CHANGES353
-rw-r--r--CHANGES_GR1213
-rw-r--r--LICENSE345
-rw-r--r--LICENSE.d/BERKELEY.LICENSE30
-rw-r--r--LICENSE.d/CALDERA.LICENSE31
-rw-r--r--LICENSE.d/COPYING.LGPL504
-rw-r--r--LICENSE.d/LPPL-1-0.LICENSE211
-rw-r--r--LICENSE.d/LUCENT.LICENSE258
-rw-r--r--LICENSE.d/OPENSOLARIS.LICENSE385
-rw-r--r--README137
-rw-r--r--README.md32
-rw-r--r--checknr/Makefile.mk21
-rw-r--r--checknr/checknr.1143
-rw-r--r--checknr/checknr.c669
-rw-r--r--col/Makefile.mk22
-rw-r--r--col/col.c654
-rwxr-xr-xconfigure235
-rw-r--r--doc/fonts/README13
-rw-r--r--doc/fonts/doc.more1518
-rw-r--r--doc/fonts/doc.ps44884
-rw-r--r--doc/fonts/doc.tr1048
-rw-r--r--doc/fonts/makefile64
-rw-r--r--doc/just/README25
-rw-r--r--doc/just/doc.more1518
-rw-r--r--doc/just/doc.ps45474
-rw-r--r--doc/just/doc.tr889
-rw-r--r--doc/just/makefile65
-rw-r--r--doc/quickstart/README25
-rw-r--r--doc/quickstart/doc.more132
-rw-r--r--doc/quickstart/doc.ps31998
-rw-r--r--doc/quickstart/doc.tr186
-rw-r--r--doc/quickstart/makefile50
-rw-r--r--doc/troff/README9
-rw-r--r--doc/troff/doc.more7063
-rw-r--r--doc/troff/doc.ps50551
-rw-r--r--doc/troff/doc.tr8729
-rw-r--r--doc/troff/makefile44
-rw-r--r--eqn/checkeq.d/Makefile.mk23
-rw-r--r--eqn/checkeq.d/checkeq.c148
-rw-r--r--eqn/diacrit.c128
-rw-r--r--eqn/e.h184
-rw-r--r--eqn/e.y215
-rw-r--r--eqn/eqn.d/Makefile.mk56
-rw-r--r--eqn/eqn.d/eqn.1332
-rw-r--r--eqn/eqn.d/eqnchar.7212
-rw-r--r--eqn/eqnbox.c68
-rw-r--r--eqn/eqnchar.d/Makefile.mk28
-rw-r--r--eqn/eqnchar.d/ascii34
-rw-r--r--eqn/eqnchar.d/eqnchar90
-rw-r--r--eqn/eqnchar.d/genutf8.c89
-rw-r--r--eqn/eqnchar.d/greek11
-rw-r--r--eqn/eqnchar.d/iso29
-rw-r--r--eqn/font.c99
-rw-r--r--eqn/fromto.c103
-rw-r--r--eqn/funny.c64
-rw-r--r--eqn/glob.c57
-rw-r--r--eqn/integral.c74
-rw-r--r--eqn/io.c322
-rw-r--r--eqn/lex.c308
-rw-r--r--eqn/lookup.c261
-rw-r--r--eqn/mark.c49
-rw-r--r--eqn/matrix.c108
-rw-r--r--eqn/move.c70
-rw-r--r--eqn/neqn.d/Makefile.mk53
-rw-r--r--eqn/over.c84
-rw-r--r--eqn/paren.c172
-rw-r--r--eqn/pile.c137
-rw-r--r--eqn/shift.c204
-rw-r--r--eqn/size.c107
-rw-r--r--eqn/sqrt.c62
-rw-r--r--eqn/text.c234
-rw-r--r--eqn/version.c37
-rw-r--r--eqn/yyval.sed22
-rw-r--r--grap/Makefile.mk41
-rw-r--r--grap/coord.c83
-rw-r--r--grap/for.c101
-rw-r--r--grap/frame.c83
-rw-r--r--grap/grap.1430
-rw-r--r--grap/grap.defines26
-rw-r--r--grap/grap.h257
-rw-r--r--grap/grap.y410
-rw-r--r--grap/grapl.l246
-rw-r--r--grap/input.c628
-rw-r--r--grap/label.c140
-rw-r--r--grap/main.c187
-rw-r--r--grap/misc.c308
-rw-r--r--grap/plot.c144
-rw-r--r--grap/print.c247
-rw-r--r--grap/ticks.c508
-rw-r--r--grap/version.c30
-rw-r--r--heirloom-doctools.spec82
-rw-r--r--include/global.h17
-rw-r--r--makefile88
-rw-r--r--mk.config114
-rw-r--r--mpm/Makefile.mk30
-rw-r--r--mpm/README191
-rw-r--r--mpm/misc.cc66
-rw-r--r--mpm/misc.h51
-rw-r--r--mpm/page.cc628
-rw-r--r--mpm/page.h132
-rw-r--r--mpm/queue.cc248
-rw-r--r--mpm/range.cc627
-rw-r--r--mpm/range.h348
-rw-r--r--mpm/slug.cc642
-rw-r--r--mpm/slug.h87
-rw-r--r--mpm/version.c20
-rw-r--r--pic/Makefile.mk44
-rw-r--r--pic/arcgen.c235
-rw-r--r--pic/blockgen.c238
-rw-r--r--pic/boxgen.c127
-rw-r--r--pic/circgen.c138
-rw-r--r--pic/for.c107
-rw-r--r--pic/input.c640
-rw-r--r--pic/linegen.c251
-rw-r--r--pic/main.c313
-rw-r--r--pic/misc.c479
-rw-r--r--pic/movegen.c98
-rw-r--r--pic/pic.1368
-rw-r--r--pic/pic.h240
-rw-r--r--pic/picl.l313
-rw-r--r--pic/picy.y345
-rw-r--r--pic/pltroff.c379
-rw-r--r--pic/print.c263
-rw-r--r--pic/symtab.c116
-rw-r--r--pic/textgen.c123
-rw-r--r--pic/version.c33
-rw-r--r--picpack/Makefile.mk21
-rw-r--r--picpack/getopt.c222
-rw-r--r--picpack/picpack.1139
-rw-r--r--picpack/picpack.c658
-rw-r--r--pkginfo11
-rw-r--r--ptx/Makefile.mk23
-rw-r--r--ptx/eign400
-rw-r--r--ptx/ptx.1158
-rw-r--r--ptx/ptx.c713
-rw-r--r--refer/Makefile.mk128
-rw-r--r--refer/addbib.1195
-rw-r--r--refer/addbib.c316
-rw-r--r--refer/deliv2.c84
-rw-r--r--refer/glue1.c324
-rw-r--r--refer/glue2.c41
-rw-r--r--refer/glue3.c126
-rw-r--r--refer/glue4.c138
-rw-r--r--refer/glue5.c405
-rw-r--r--refer/hunt1.c316
-rw-r--r--refer/hunt2.c308
-rw-r--r--refer/hunt3.c70
-rw-r--r--refer/hunt5.c85
-rw-r--r--refer/hunt6.c176
-rw-r--r--refer/hunt7.c143
-rw-r--r--refer/hunt8.c105
-rw-r--r--refer/hunt9.c29
-rwxr-xr-xrefer/indxbib.sh28
-rw-r--r--refer/inv1.c179
-rw-r--r--refer/inv2.c118
-rw-r--r--refer/inv3.c43
-rw-r--r--refer/inv5.c78
-rw-r--r--refer/inv6.c102
-rw-r--r--refer/lookbib.1174
-rw-r--r--refer/lookbib.c99
-rw-r--r--refer/mkey1.c119
-rw-r--r--refer/mkey2.c167
-rw-r--r--refer/mkey3.c79
-rw-r--r--refer/papers/Rbstjissue224
-rw-r--r--refer/papers/Rv7man405
-rwxr-xr-xrefer/papers/runinv.sh17
-rw-r--r--refer/refer..c180
-rw-r--r--refer/refer.1300
-rw-r--r--refer/refer0.c54
-rw-r--r--refer/refer1.c194
-rw-r--r--refer/refer2.c215
-rw-r--r--refer/refer3.c60
-rw-r--r--refer/refer4.c108
-rw-r--r--refer/refer5.c360
-rw-r--r--refer/refer6.c249
-rw-r--r--refer/refer7.c183
-rw-r--r--refer/refer8.c61
-rw-r--r--refer/roffbib.1171
-rwxr-xr-xrefer/roffbib.sh56
-rw-r--r--refer/shell.c51
-rw-r--r--refer/sortbib.1146
-rw-r--r--refer/sortbib.c343
-rw-r--r--refer/tick.c62
-rw-r--r--refer/version.c48
-rw-r--r--soelim/Makefile.mk21
-rw-r--r--soelim/soelim.174
-rw-r--r--soelim/soelim.c151
-rw-r--r--stuff/bst/Makefile.mk10
-rw-r--r--stuff/bst/bst.c382
-rw-r--r--stuff/bst/bst.h68
-rw-r--r--stuff/demo/PDFX_def.ps30
-rw-r--r--stuff/demo/README15
-rw-r--r--stuff/demo/makefile19
-rw-r--r--stuff/demo/troffdemo.tr224
-rw-r--r--stuff/demo/troffdemo_otf.tr2
-rw-r--r--stuff/footnotes.tr143
-rw-r--r--stuff/odt2tr.xsl628
-rwxr-xr-xstuff/showfont.sh114
-rw-r--r--tbl/Makefile.mk45
-rw-r--r--tbl/t..c223
-rw-r--r--tbl/t0.c85
-rw-r--r--tbl/t1.c189
-rw-r--r--tbl/t2.c49
-rw-r--r--tbl/t3.c132
-rw-r--r--tbl/t4.c473
-rw-r--r--tbl/t5.c250
-rw-r--r--tbl/t6.c250
-rw-r--r--tbl/t7.c181
-rw-r--r--tbl/t8.c425
-rw-r--r--tbl/t9.c92
-rw-r--r--tbl/tb.c154
-rw-r--r--tbl/tbl.1187
-rw-r--r--tbl/tc.c87
-rw-r--r--tbl/te.c122
-rw-r--r--tbl/tf.c109
-rw-r--r--tbl/tg.c127
-rw-r--r--tbl/ti.c82
-rw-r--r--tbl/tm.c91
-rw-r--r--tbl/ts.c89
-rw-r--r--tbl/tt.c117
-rw-r--r--tbl/tu.c401
-rw-r--r--tbl/tv.c186
-rw-r--r--tbl/version.c33
-rw-r--r--test/eqn/eqn.more140
-rw-r--r--test/eqn/eqn.ps1733
-rw-r--r--test/eqn/eqn.roff182
-rw-r--r--test/eqn/makefile23
-rw-r--r--test/grap/data/rawgrades6
-rw-r--r--test/grap/data/ttrev.data5
-rw-r--r--test/grap/grap.more66
-rw-r--r--test/grap/grap.ps561
-rw-r--r--test/grap/grap.roff30
-rw-r--r--test/grap/makefile25
-rw-r--r--test/makefile13
-rw-r--r--test/pic/makefile25
-rw-r--r--test/pic/pic.more140
-rw-r--r--test/pic/pic.ps849
-rw-r--r--test/pic/pic.roff93
-rw-r--r--test/refer/32/bib3
-rw-r--r--test/refer/32/makefile6
-rw-r--r--test/refer/32/out9
-rw-r--r--test/refer/ab/ab.bib2
-rw-r--r--test/refer/ab/ab.ms5
-rw-r--r--test/refer/ab/makefile7
-rw-r--r--test/refer/ab/out19
-rw-r--r--test/tbl/1cell-allbox.roff5
-rw-r--r--test/tbl/ND.roff1
-rw-r--r--test/tbl/ab1.roff7
-rw-r--r--test/tbl/ab2.roff7
-rw-r--r--test/tbl/expand.nr55
-rw-r--r--test/tbl/linienbsp.roff16
-rw-r--r--test/tbl/makefile44
-rw-r--r--test/tbl/mid-sq.roff16
-rw-r--r--test/tbl/mm.roff69
-rw-r--r--test/tbl/n.roff14
-rw-r--r--test/tbl/no-unicode.roff13
-rw-r--r--test/tbl/short-v.roff15
-rw-r--r--test/tbl/supermarket.roff19
-rw-r--r--test/tbl/tbl-backslash.roff5
-rw-r--r--test/tbl/tbl.doc1940
-rw-r--r--test/tbl/tbl.doc.more1650
-rw-r--r--test/tbl/tbl.doc.ps8142
-rw-r--r--test/tbl/tbl.more196
-rw-r--r--test/tbl/tbl.ps1389
-rw-r--r--test/tbl/tbl.roff154
-rw-r--r--test/tbl/tv.roff16
-rw-r--r--test/tbl/vi.roff31
-rw-r--r--troff/ext.h600
-rw-r--r--troff/hytab.c171
-rw-r--r--troff/libhnj/AUTHORS19
-rw-r--r--troff/libhnj/Makefile.mk22
-rw-r--r--troff/libhnj/README13
-rw-r--r--troff/libhnj/README.hyphen96
-rw-r--r--troff/libhnj/hnjalloc.c97
-rw-r--r--troff/libhnj/hnjalloc.h53
-rw-r--r--troff/libhnj/hyphen.c515
-rw-r--r--troff/libhnj/hyphen.d/Makefile.mk12
-rw-r--r--troff/libhnj/hyphen.d/NOTES58
-rw-r--r--troff/libhnj/hyphen.d/hyph_de_DE.dic7462
-rw-r--r--troff/libhnj/hyphen.d/hyph_de_DE@traditional.dic7382
-rw-r--r--troff/libhnj/hyphen.d/hyph_en_US.dic5551
-rw-r--r--troff/libhnj/hyphen.d/hyph_fr_FR.dic1784
-rw-r--r--troff/libhnj/hyphen.d/hyph_it_IT.dic442
-rw-r--r--troff/libhnj/hyphen.d/hyph_la_VA.dic418
-rw-r--r--troff/libhnj/hyphen.d/hyph_nl_NL.dic16550
-rwxr-xr-xtroff/libhnj/hyphen.d/substring.pl136
-rw-r--r--troff/libhnj/hyphen.h89
-rw-r--r--troff/libhnj/test.c23
-rw-r--r--troff/n1.c2602
-rw-r--r--troff/n2.c511
-rw-r--r--troff/n3.c2365
-rw-r--r--troff/n4.c1931
-rw-r--r--troff/n5.c2536
-rw-r--r--troff/n7.c2342
-rw-r--r--troff/n8.c650
-rw-r--r--troff/n9.c1348
-rw-r--r--troff/ni.c352
-rw-r--r--troff/nii.c196
-rw-r--r--troff/nroff.d/Makefile.mk49
-rw-r--r--troff/nroff.d/draw.c186
-rw-r--r--troff/nroff.d/draw.h4
-rw-r--r--troff/nroff.d/n10.c891
-rw-r--r--troff/nroff.d/n6.c707
-rw-r--r--troff/nroff.d/nroff.1271
-rw-r--r--troff/nroff.d/pt.h85
-rw-r--r--troff/nroff.d/terms.d/Makefile.mk88
-rw-r--r--troff/nroff.d/terms.d/README130
-rw-r--r--troff/nroff.d/terms.d/a.263127
-rw-r--r--troff/nroff.d/terms.d/a.2631-c27
-rw-r--r--troff/nroff.d/terms.d/a.2631-e27
-rw-r--r--troff/nroff.d/terms.d/a.30027
-rw-r--r--troff/nroff.d/terms.d/a.300-1227
-rw-r--r--troff/nroff.d/terms.d/a.300s27
-rw-r--r--troff/nroff.d/terms.d/a.300s-1227
-rw-r--r--troff/nroff.d/terms.d/a.38227
-rw-r--r--troff/nroff.d/terms.d/a.4000a27
-rw-r--r--troff/nroff.d/terms.d/a.45027
-rw-r--r--troff/nroff.d/terms.d/a.450-1227
-rw-r--r--troff/nroff.d/terms.d/a.83227
-rw-r--r--troff/nroff.d/terms.d/a.lp27
-rw-r--r--troff/nroff.d/terms.d/ab.37168
-rw-r--r--troff/nroff.d/terms.d/ab.8510154
-rw-r--r--troff/nroff.d/terms.d/ab.X154
-rw-r--r--troff/nroff.d/terms.d/ab.tn300154
-rw-r--r--troff/nroff.d/terms.d/b.300127
-rw-r--r--troff/nroff.d/terms.d/b.lp318
-rw-r--r--troff/nroff.d/terms.d/tab.utf8400
-rw-r--r--troff/nroff.d/tw.h80
-rw-r--r--troff/suftab.c654
-rw-r--r--troff/tdef.h959
-rw-r--r--troff/troff.d/Makefile.mk66
-rw-r--r--troff/troff.d/README184
-rw-r--r--troff/troff.d/afm.c1201
-rw-r--r--troff/troff.d/afm.h149
-rw-r--r--troff/troff.d/dev.h104
-rw-r--r--troff/troff.d/devaps/B148
-rw-r--r--troff/troff.d/devaps/BI139
-rw-r--r--troff/troff.d/devaps/C139
-rw-r--r--troff/troff.d/devaps/CE139
-rw-r--r--troff/troff.d/devaps/CI139
-rw-r--r--troff/troff.d/devaps/CT132
-rw-r--r--troff/troff.d/devaps/CW147
-rw-r--r--troff/troff.d/devaps/CX140
-rw-r--r--troff/troff.d/devaps/DESC67
-rw-r--r--troff/troff.d/devaps/G139
-rw-r--r--troff/troff.d/devaps/GB90
-rw-r--r--troff/troff.d/devaps/GI141
-rw-r--r--troff/troff.d/devaps/GR89
-rw-r--r--troff/troff.d/devaps/GS135
-rw-r--r--troff/troff.d/devaps/H139
-rw-r--r--troff/troff.d/devaps/HB139
-rw-r--r--troff/troff.d/devaps/HI141
-rw-r--r--troff/troff.d/devaps/HK140
-rw-r--r--troff/troff.d/devaps/HL139
-rw-r--r--troff/troff.d/devaps/HX140
-rw-r--r--troff/troff.d/devaps/I148
-rw-r--r--troff/troff.d/devaps/MB139
-rw-r--r--troff/troff.d/devaps/MI139
-rw-r--r--troff/troff.d/devaps/MR139
-rw-r--r--troff/troff.d/devaps/MX139
-rw-r--r--troff/troff.d/devaps/Makefile.mk48
-rw-r--r--troff/troff.d/devaps/PA139
-rw-r--r--troff/troff.d/devaps/PB139
-rw-r--r--troff/troff.d/devaps/PI139
-rw-r--r--troff/troff.d/devaps/PO147
-rw-r--r--troff/troff.d/devaps/PX140
-rw-r--r--troff/troff.d/devaps/R148
-rw-r--r--troff/troff.d/devaps/README102
-rw-r--r--troff/troff.d/devaps/S127
-rw-r--r--troff/troff.d/devaps/S174
-rw-r--r--troff/troff.d/devaps/SC135
-rw-r--r--troff/troff.d/devaps/SM134
-rw-r--r--troff/troff.d/devaps/TB139
-rw-r--r--troff/troff.d/devaps/TX140
-rw-r--r--troff/troff.d/devaps/aps.h136
-rw-r--r--troff/troff.d/devaps/build.c323
-rw-r--r--troff/troff.d/devaps/daps.c2995
-rw-r--r--troff/troff.d/devaps/daps.g219
-rw-r--r--troff/troff.d/devaps/daps.h461
-rw-r--r--troff/troff.d/devaps/dev.h81
-rw-r--r--troff/troff.d/devaps/draw.c3
-rw-r--r--troff/troff.d/devaps/getopt.c222
-rw-r--r--troff/troff.d/devaps/makedev.c650
-rw-r--r--troff/troff.d/devaps/version34
-rw-r--r--troff/troff.d/devaps/version.c19
-rw-r--r--troff/troff.d/dhtml/Makefile.mk29
-rw-r--r--troff/troff.d/dhtml/char.c115
-rw-r--r--troff/troff.d/dhtml/char.h15
-rw-r--r--troff/troff.d/dhtml/dhtml.1107
-rw-r--r--troff/troff.d/dhtml/dhtml.h1
-rw-r--r--troff/troff.d/dhtml/dhtml.l87
-rw-r--r--troff/troff.d/dhtml/lib.c148
-rw-r--r--troff/troff.d/dhtml/lib.h9
-rw-r--r--troff/troff.d/dhtml/main.c79
-rw-r--r--troff/troff.d/dhtml/main.h1
-rw-r--r--troff/troff.d/dhtml/roff.c27
-rw-r--r--troff/troff.d/dhtml/roff.h2
-rw-r--r--troff/troff.d/dhtml/tr_out.c221
-rw-r--r--troff/troff.d/dhtml/tr_out.h17
-rw-r--r--troff/troff.d/dpost.d/Makefile.mk42
-rw-r--r--troff/troff.d/dpost.d/README53
-rw-r--r--troff/troff.d/dpost.d/afm.c32
-rw-r--r--troff/troff.d/dpost.d/asciitype.c59
-rw-r--r--troff/troff.d/dpost.d/asciitype.h60
-rw-r--r--troff/troff.d/dpost.d/color.c275
-rw-r--r--troff/troff.d/dpost.d/comments.h161
-rw-r--r--troff/troff.d/dpost.d/dpost.1258
-rw-r--r--troff/troff.d/dpost.d/dpost.c4836
-rw-r--r--troff/troff.d/dpost.d/dpost.h192
-rw-r--r--troff/troff.d/dpost.d/draw.c844
-rw-r--r--troff/troff.d/dpost.d/ext.h54
-rw-r--r--troff/troff.d/dpost.d/gen.h174
-rw-r--r--troff/troff.d/dpost.d/getopt.c222
-rw-r--r--troff/troff.d/dpost.d/glob.c56
-rw-r--r--troff/troff.d/dpost.d/makedev.c29
-rw-r--r--troff/troff.d/dpost.d/misc.c395
-rw-r--r--troff/troff.d/dpost.d/otf.c36
-rw-r--r--troff/troff.d/dpost.d/path.h61
-rw-r--r--troff/troff.d/dpost.d/pictures.c364
-rw-r--r--troff/troff.d/dpost.d/ps_include.c361
-rw-r--r--troff/troff.d/dpost.d/request.c182
-rw-r--r--troff/troff.d/dpost.d/request.h58
-rw-r--r--troff/troff.d/dpost.d/version.c3
-rw-r--r--troff/troff.d/draw.c497
-rw-r--r--troff/troff.d/font/Makefile.mk57
-rw-r--r--troff/troff.d/font/README139
-rw-r--r--troff/troff.d/font/devhtml/B2
-rw-r--r--troff/troff.d/font/devhtml/BI2
-rw-r--r--troff/troff.d/font/devhtml/C2
-rw-r--r--troff/troff.d/font/devhtml/CB2
-rw-r--r--troff/troff.d/font/devhtml/CHAR121
-rw-r--r--troff/troff.d/font/devhtml/CI2
-rw-r--r--troff/troff.d/font/devhtml/CR2
-rw-r--r--troff/troff.d/font/devhtml/CW2
-rw-r--r--troff/troff.d/font/devhtml/DESC7
-rw-r--r--troff/troff.d/font/devhtml/H2
-rw-r--r--troff/troff.d/font/devhtml/HB2
-rw-r--r--troff/troff.d/font/devhtml/HI2
-rw-r--r--troff/troff.d/font/devhtml/I2
-rw-r--r--troff/troff.d/font/devhtml/Makefile.mk23
-rw-r--r--troff/troff.d/font/devhtml/R2
-rw-r--r--troff/troff.d/font/devhtml/S2
-rw-r--r--troff/troff.d/font/devhtml/charset90
-rw-r--r--troff/troff.d/font/devhtml/makefont.c195
-rw-r--r--troff/troff.d/font/devpost/AB125
-rw-r--r--troff/troff.d/font/devpost/AB.name1
-rw-r--r--troff/troff.d/font/devpost/AI125
-rw-r--r--troff/troff.d/font/devpost/AI.name1
-rw-r--r--troff/troff.d/font/devpost/AR125
-rw-r--r--troff/troff.d/font/devpost/AR.name1
-rw-r--r--troff/troff.d/font/devpost/AX125
-rw-r--r--troff/troff.d/font/devpost/AX.name1
-rw-r--r--troff/troff.d/font/devpost/B137
-rw-r--r--troff/troff.d/font/devpost/B.name1
-rw-r--r--troff/troff.d/font/devpost/BI133
-rw-r--r--troff/troff.d/font/devpost/BI.name1
-rw-r--r--troff/troff.d/font/devpost/CB137
-rw-r--r--troff/troff.d/font/devpost/CB.name1
-rw-r--r--troff/troff.d/font/devpost/CI145
-rw-r--r--troff/troff.d/font/devpost/CI.name1
-rw-r--r--troff/troff.d/font/devpost/CO137
-rw-r--r--troff/troff.d/font/devpost/CO.name1
-rw-r--r--troff/troff.d/font/devpost/CW145
-rw-r--r--troff/troff.d/font/devpost/CW.name1
-rw-r--r--troff/troff.d/font/devpost/CX145
-rw-r--r--troff/troff.d/font/devpost/CX.name1
-rw-r--r--troff/troff.d/font/devpost/DESC63
-rw-r--r--troff/troff.d/font/devpost/DESC.big48
-rw-r--r--troff/troff.d/font/devpost/DESC.small52
-rw-r--r--troff/troff.d/font/devpost/FONTMAP21
-rw-r--r--troff/troff.d/font/devpost/GR83
-rw-r--r--troff/troff.d/font/devpost/GR.name1
-rw-r--r--troff/troff.d/font/devpost/H133
-rw-r--r--troff/troff.d/font/devpost/H.name1
-rw-r--r--troff/troff.d/font/devpost/HB133
-rw-r--r--troff/troff.d/font/devpost/HB.name1
-rw-r--r--troff/troff.d/font/devpost/HI133
-rw-r--r--troff/troff.d/font/devpost/HI.name1
-rw-r--r--troff/troff.d/font/devpost/HNB125
-rw-r--r--troff/troff.d/font/devpost/HNB.name1
-rw-r--r--troff/troff.d/font/devpost/HNBI125
-rw-r--r--troff/troff.d/font/devpost/HNBI.name1
-rw-r--r--troff/troff.d/font/devpost/HNI125
-rw-r--r--troff/troff.d/font/devpost/HNI.name1
-rw-r--r--troff/troff.d/font/devpost/HNR125
-rw-r--r--troff/troff.d/font/devpost/HNR.name1
-rw-r--r--troff/troff.d/font/devpost/HX133
-rw-r--r--troff/troff.d/font/devpost/HX.name1
-rw-r--r--troff/troff.d/font/devpost/I137
-rw-r--r--troff/troff.d/font/devpost/I.name1
-rw-r--r--troff/troff.d/font/devpost/KB125
-rw-r--r--troff/troff.d/font/devpost/KB.name1
-rw-r--r--troff/troff.d/font/devpost/KI125
-rw-r--r--troff/troff.d/font/devpost/KI.name1
-rw-r--r--troff/troff.d/font/devpost/KR125
-rw-r--r--troff/troff.d/font/devpost/KR.name1
-rw-r--r--troff/troff.d/font/devpost/KX125
-rw-r--r--troff/troff.d/font/devpost/KX.name1
-rw-r--r--troff/troff.d/font/devpost/NB125
-rw-r--r--troff/troff.d/font/devpost/NB.name1
-rw-r--r--troff/troff.d/font/devpost/NI125
-rw-r--r--troff/troff.d/font/devpost/NI.name1
-rw-r--r--troff/troff.d/font/devpost/NR125
-rw-r--r--troff/troff.d/font/devpost/NR.name1
-rw-r--r--troff/troff.d/font/devpost/NX125
-rw-r--r--troff/troff.d/font/devpost/NX.name1
-rw-r--r--troff/troff.d/font/devpost/PA133
-rw-r--r--troff/troff.d/font/devpost/PA.name1
-rw-r--r--troff/troff.d/font/devpost/PB133
-rw-r--r--troff/troff.d/font/devpost/PB.name1
-rw-r--r--troff/troff.d/font/devpost/PI133
-rw-r--r--troff/troff.d/font/devpost/PI.name1
-rw-r--r--troff/troff.d/font/devpost/PX133
-rw-r--r--troff/troff.d/font/devpost/PX.name1
-rw-r--r--troff/troff.d/font/devpost/R137
-rw-r--r--troff/troff.d/font/devpost/R.name1
-rw-r--r--troff/troff.d/font/devpost/S236
-rw-r--r--troff/troff.d/font/devpost/S.big228
-rw-r--r--troff/troff.d/font/devpost/S.name1
-rw-r--r--troff/troff.d/font/devpost/S.small155
-rw-r--r--troff/troff.d/font/devpost/S164
-rw-r--r--troff/troff.d/font/devpost/S1.name1
-rw-r--r--troff/troff.d/font/devpost/VB129
-rw-r--r--troff/troff.d/font/devpost/VB.name1
-rw-r--r--troff/troff.d/font/devpost/VI129
-rw-r--r--troff/troff.d/font/devpost/VI.name1
-rw-r--r--troff/troff.d/font/devpost/VR129
-rw-r--r--troff/troff.d/font/devpost/VR.name1
-rw-r--r--troff/troff.d/font/devpost/VX129
-rw-r--r--troff/troff.d/font/devpost/VX.name1
-rw-r--r--troff/troff.d/font/devpost/ZD214
-rw-r--r--troff/troff.d/font/devpost/ZD.name1
-rw-r--r--troff/troff.d/font/devpost/ZI125
-rw-r--r--troff/troff.d/font/devpost/ZI.name1
-rw-r--r--troff/troff.d/font/devpost/charlib/1244
-rw-r--r--troff/troff.d/font/devpost/charlib/1444
-rw-r--r--troff/troff.d/font/devpost/charlib/3444
-rw-r--r--troff/troff.d/font/devpost/charlib/BRACKETS_NOTE58
-rw-r--r--troff/troff.d/font/devpost/charlib/Fi30
-rw-r--r--troff/troff.d/font/devpost/charlib/Fl30
-rw-r--r--troff/troff.d/font/devpost/charlib/L138
-rw-r--r--troff/troff.d/font/devpost/charlib/L1.map150
-rw-r--r--troff/troff.d/font/devpost/charlib/LH.map871
-rw-r--r--troff/troff.d/font/devpost/charlib/LH_uc27
-rw-r--r--troff/troff.d/font/devpost/charlib/Lb38
-rw-r--r--troff/troff.d/font/devpost/charlib/Lb.map150
-rw-r--r--troff/troff.d/font/devpost/charlib/OLD_LH34
-rw-r--r--troff/troff.d/font/devpost/charlib/OLD_LH.map150
-rw-r--r--troff/troff.d/font/devpost/charlib/README47
-rw-r--r--troff/troff.d/font/devpost/charlib/Sl131
-rw-r--r--troff/troff.d/font/devpost/charlib/bx38
-rw-r--r--troff/troff.d/font/devpost/charlib/ci34
-rw-r--r--troff/troff.d/font/devpost/charlib/ff30
-rw-r--r--troff/troff.d/font/devpost/charlib/lc61
-rw-r--r--troff/troff.d/font/devpost/charlib/lf61
-rw-r--r--troff/troff.d/font/devpost/charlib/lh193
-rw-r--r--troff/troff.d/font/devpost/charlib/ob34
-rw-r--r--troff/troff.d/font/devpost/charlib/rc61
-rw-r--r--troff/troff.d/font/devpost/charlib/rf61
-rw-r--r--troff/troff.d/font/devpost/charlib/rh184
-rw-r--r--troff/troff.d/font/devpost/charlib/sq42
-rw-r--r--troff/troff.d/font/devpost/charlib/~=30
-rw-r--r--troff/troff.d/font/devps/B1
-rw-r--r--troff/troff.d/font/devps/B.afm1331
-rw-r--r--troff/troff.d/font/devps/BI1
-rw-r--r--troff/troff.d/font/devps/BI.afm1264
-rw-r--r--troff/troff.d/font/devps/CB1
-rw-r--r--troff/troff.d/font/devps/CB.afm256
-rw-r--r--troff/troff.d/font/devps/CI1
-rw-r--r--troff/troff.d/font/devps/CI.afm256
-rw-r--r--troff/troff.d/font/devps/CW1
-rw-r--r--troff/troff.d/font/devps/CW.afm256
-rw-r--r--troff/troff.d/font/devps/CX1
-rw-r--r--troff/troff.d/font/devps/CX.afm256
-rw-r--r--troff/troff.d/font/devps/DESC62
-rw-r--r--troff/troff.d/font/devps/FONTMAP2
-rw-r--r--troff/troff.d/font/devps/H1
-rw-r--r--troff/troff.d/font/devps/H.afm1558
-rw-r--r--troff/troff.d/font/devps/HB1
-rw-r--r--troff/troff.d/font/devps/HB.afm1441
-rw-r--r--troff/troff.d/font/devps/HI1
-rw-r--r--troff/troff.d/font/devps/HI.afm1558
-rw-r--r--troff/troff.d/font/devps/HX1
-rw-r--r--troff/troff.d/font/devps/HX.afm1441
-rw-r--r--troff/troff.d/font/devps/I1
-rw-r--r--troff/troff.d/font/devps/I.afm1298
-rw-r--r--troff/troff.d/font/devps/MustRead.html19
-rw-r--r--troff/troff.d/font/devps/R1
-rw-r--r--troff/troff.d/font/devps/R.afm1271
-rw-r--r--troff/troff.d/font/devps/S2
-rw-r--r--troff/troff.d/font/devps/S.afm214
-rw-r--r--troff/troff.d/font/devps/S12
-rw-r--r--troff/troff.d/font/devps/S1.afm51
-rw-r--r--troff/troff.d/font/devps/ZD1
-rw-r--r--troff/troff.d/font/devps/ZD.afm226
-rw-r--r--troff/troff.d/font/devpslow/DESC60
-rw-r--r--troff/troff.d/font/devpsmed/DESC61
-rw-r--r--troff/troff.d/fontmap.c158
-rw-r--r--troff/troff.d/fontmap.h2
-rw-r--r--troff/troff.d/makedev.c491
-rw-r--r--troff/troff.d/otf.c3597
-rw-r--r--troff/troff.d/otfdump.143
-rw-r--r--troff/troff.d/otfdump.c216
-rw-r--r--troff/troff.d/otfdump_vs.c3
-rw-r--r--troff/troff.d/postscript/Makefile.mk12
-rw-r--r--troff/troff.d/postscript/aps.ps154
-rw-r--r--troff/troff.d/postscript/baseline.ps183
-rw-r--r--troff/troff.d/postscript/color.ps93
-rw-r--r--troff/troff.d/postscript/cutmarks.ps260
-rw-r--r--troff/troff.d/postscript/dpost.ps285
-rw-r--r--troff/troff.d/postscript/draw.ps124
-rw-r--r--troff/troff.d/postscript/fatcourier.ps53
-rw-r--r--troff/troff.d/postscript/forms.ps223
-rw-r--r--troff/troff.d/postscript/ps.requests36
-rw-r--r--troff/troff.d/postscript/ps_include.ps139
-rw-r--r--troff/troff.d/pt.h96
-rw-r--r--troff/troff.d/t10.c1139
-rw-r--r--troff/troff.d/t6.c3032
-rw-r--r--troff/troff.d/ta.c886
-rw-r--r--troff/troff.d/tmac.d/Makefile.mk32
-rw-r--r--troff/troff.d/tmac.d/acm.me88
-rw-r--r--troff/troff.d/tmac.d/an-ext104
-rw-r--r--troff/troff.d/tmac.d/an.in647
-rw-r--r--troff/troff.d/tmac.d/andoc.in66
-rw-r--r--troff/troff.d/tmac.d/bib.in251
-rw-r--r--troff/troff.d/tmac.d/chars.me86
-rw-r--r--troff/troff.d/tmac.d/color58
-rw-r--r--troff/troff.d/tmac.d/deltext.me53
-rw-r--r--troff/troff.d/tmac.d/doc-common489
-rw-r--r--troff/troff.d/tmac.d/doc-ditroff.in192
-rw-r--r--troff/troff.d/tmac.d/doc-nroff150
-rw-r--r--troff/troff.d/tmac.d/doc-syms492
-rw-r--r--troff/troff.d/tmac.d/doc.in4264
-rw-r--r--troff/troff.d/tmac.d/e.in1051
-rw-r--r--troff/troff.d/tmac.d/eqn.me110
-rw-r--r--troff/troff.d/tmac.d/float.me93
-rw-r--r--troff/troff.d/tmac.d/footnote.me116
-rw-r--r--troff/troff.d/tmac.d/g.in237
-rw-r--r--troff/troff.d/tmac.d/index.me134
-rw-r--r--troff/troff.d/tmac.d/local.me43
-rw-r--r--troff/troff.d/tmac.d/m.in40
-rw-r--r--troff/troff.d/tmac.d/man.71220
-rw-r--r--troff/troff.d/tmac.d/mcolor.7121
-rw-r--r--troff/troff.d/tmac.d/mdoc.74280
-rw-r--r--troff/troff.d/tmac.d/mmn2832
-rw-r--r--troff/troff.d/tmac.d/mmt2850
-rw-r--r--troff/troff.d/tmac.d/mpictures.7188
-rw-r--r--troff/troff.d/tmac.d/ms.acc116
-rw-r--r--troff/troff.d/tmac.d/ms.cov298
-rw-r--r--troff/troff.d/tmac.d/ms.eqn91
-rw-r--r--troff/troff.d/tmac.d/ms.ref192
-rw-r--r--troff/troff.d/tmac.d/ms.tbl116
-rw-r--r--troff/troff.d/tmac.d/ms.ths53
-rw-r--r--troff/troff.d/tmac.d/ms.toc106
-rw-r--r--troff/troff.d/tmac.d/naa115
-rw-r--r--troff/troff.d/tmac.d/null.me36
-rw-r--r--troff/troff.d/tmac.d/padj2
-rw-r--r--troff/troff.d/tmac.d/pictures169
-rw-r--r--troff/troff.d/tmac.d/pm.in975
-rw-r--r--troff/troff.d/tmac.d/ptx28
-rw-r--r--troff/troff.d/tmac.d/refer.me129
-rw-r--r--troff/troff.d/tmac.d/s.in1066
-rw-r--r--troff/troff.d/tmac.d/safe12
-rw-r--r--troff/troff.d/tmac.d/sh.me142
-rw-r--r--troff/troff.d/tmac.d/srefs169
-rw-r--r--troff/troff.d/tmac.d/taa134
-rw-r--r--troff/troff.d/tmac.d/tbl.me144
-rw-r--r--troff/troff.d/tmac.d/thesis.me52
-rw-r--r--troff/troff.d/tmac.d/tmac.gchar272
-rw-r--r--troff/troff.d/tmac.d/v555
-rw-r--r--troff/troff.d/tmac.d/vgrind406
-rw-r--r--troff/troff.d/troff.1308
-rw-r--r--troff/troff.d/troff.h67
-rw-r--r--troff/troff.d/unimap.c915
-rw-r--r--troff/troff.d/unimap.h42
-rw-r--r--troff/version.c77
-rw-r--r--version.mk2
-rw-r--r--vgrind/Makefile.mk34
-rw-r--r--vgrind/regexp.c569
-rw-r--r--vgrind/retest.c83
-rw-r--r--vgrind/version.c15
-rw-r--r--vgrind/vfontedpr.c901
-rw-r--r--vgrind/vgrind.1228
-rwxr-xr-xvgrind/vgrind.sh259
-rw-r--r--vgrind/vgrindefs.c314
-rw-r--r--vgrind/vgrindefs.src170
686 files changed, 397356 insertions, 0 deletions
diff --git a/CHANGES b/CHANGES
new file mode 100644
index 000000000000..77946f32085b
--- /dev/null
+++ b/CHANGES
@@ -0,0 +1,353 @@
+2016-09-07
+ Escapes \A and \T had unnecessary restrictions regarding the
+ allowed character set. This let to problems when e.g. gen-
+ erating man pages with TOC using -dToc. 8-bit characters are
+ allowed now.
+
+2016-08-20
+ dpost generates valid PostScript when using fonts
+ with spaces in the glyph names.
+ (Marcin Cieślak (@FreeBSD))
+
+2016-04-27
+ -mdoc: Table of contents with hyperlinks and PDF bookmarks
+ added.
+
+2016-03-28
+ -man: Table of contents with hyperlinks and PDF bookmarks ad-
+ ded.
+
+2016-03-15
+ eqn bug fixed which had caused crash for DWB neqn test (has
+ same code).
+
+2016-03-08
+ grap bug fixed which had cause a double free(3) crash.
+
+Release 160308
+==============
+
+2016-03-08
+ refer: Bug introduced in commit
+ 89b1284c1de8071f3d7bb3a308cb080b8e2f311b fixed. (Reported by
+ Anthony J. Bentley (@OpenBSD))
+
+Release 160217
+==============
+
+2016-02-17
+ tbl: Invalid memory access bug fixed. (When testing if a
+ line starts with '_' or '=' it did not check if the string is
+ empty.)
+
+2016-02-16
+ .tr bugfix: When the first character given to .tr was un-
+ known, all character translations had been done wrong.
+
+2016-02-11
+ tbl troff bug fixed: Height of table had been calculated
+ wrong. This could lead to graphics artifacts if a table is
+ at page bottom.
+
+2016-02-10
+ Many changes to -man and -mdoc. Heirloom's manual page for-
+ matting is now quite compatible to groff.
+
+2016-02-08
+ Operator 'v' added for ".if". (Some manpages using this.)
+
+2016-02-02
+ -ms: Macros .QS and .QE added.
+
+2016-01-29
+ Support for groff's notation \[uXXXX] added.
+
+2016-01-26
+ nroff: Use of new names for .char now possible. (Up to now
+ only names found in the tab file could be used.)
+
+2016-01-01
+ Spaces are now allowed in filenames of .cf, .fp, .lf, .nx,
+ and .so requests. The documentation stated that %20 could be
+ used to escape spaces. However this was not implemented.
+ The implementation has now been changed to allow spaces by
+ quoting the filename with '"'. Additionally character codes
+ up to 255 are allowed now in filenames. (Bug reported by
+ Jacob Parker (https://github.com/jacobp100).)
+
+2015-12-23
+ groff's operator ".if F <font>" added.
+
+2015-12-18
+ Support for groff's notation \[char<n>] added.
+
+2015-12-10
+ File system case-sensitivity issue fixed. (Reported by Henry
+ McGilton.)
+
+2015-10-28
+ Set previous font to current font in case of unknown font.
+ This is the groff behaviour. E.g. \fIfoo\fP \f(CWbar\fP blah
+ did underline "blah" in AT&T nroff.
+
+2015-09-23
+ \n[.ns] implemented (had only been documented up to now).
+
+2015-09-21
+ Basic HTML support added.
+
+2015-09-18
+ Escape \I added (test if argument is a valid identifier). \I
+ is equivalent to groff's \A.
+
+2015-07-14
+ PDFMark: \X'SetBorderStyle' added.
+
+2015-07-08
+ Special groff compatibility mode for manual pages added which
+ is enabled when register .g is set to 1.
+
+2015-06-24
+ .box bug fixed: .box did discard part of roff's state.
+
+2015-06-22
+ mm(7): .PGFORM added to allow line length change inside docu-
+ ment.
+
+2015-06-10
+ .ie-.el bug fixed. Up to now .ie-.el did not work fully re-
+ liable in AT&T roff. (Found during -mdoc debugging.)
+
+2015-06-08
+ mdoc: Macro Lb with library definitions for FreeBSD and
+ NetBSD added.
+
+2015-06-05
+ nroff -T37 (default), -Tlp and -Tlocale: Display of pic(7)
+ drawings implemented.
+
+2015-06-04
+ troff -Tpost: All font description files now uppercase (for
+ use on case-insensitive file systems) and use of groff font
+ names instead of traditional names now possible with .ft and
+ \f.
+
+2015-05-26
+ Bugfix: nroff: Local motions had not been local (did stay in
+ effect across line boundary).
+
+ nroff: Request \D'l ...' added.
+
+2015-05-02
+ mdoc(7): .El: List type stack bug fixed.
+
+Release 150406
+==============
+
+2015-04-02
+ Renamed otfdump(1) into otf_info(1) to avoid conflicts with
+ other tools with the same name.
+
+2015-03-27
+ man, mdoc: Special characters for troff updated.
+
+ Bugfix: pic: C precedence error found by clang.
+
+2015-03-26
+ tbl: Key letter 'x' added (a GNU tbl extension).
+
+2015-03-22
+ mdoc macros updated for troff output.
+
+2015-03-20
+ Workaround to handle some .char problems added. The .char
+ implementation needs to be changed eventually. Currently the
+ translation takes place in the input stage but it has to be
+ in the output stage.
+
+ man macros (nroff mode):
+ - Allow nine instead of six arguments
+ - Document formated as one large page
+ - mandoc(1) output layout (indent, left adjust, line length
+ etc.) adapted
+ - Workaround for pod2man(1) bug (causes empty first page) ad-
+ ded
+
+ Minor mdoc macro changes (indent and some special charac-
+ ters).
+
+2015-03-19
+ \\ can now be used in fields and tables to output a \ but it
+ is anyway recommended to use \(rs or at least \e instead.
+ (Traditionally AT&T roff did reduce \\ to \ in fields and
+ tables so \\\\ had been need to be input for printing one \.)
+
+ Bugfix: roff: Don't recognize . (dot) as a number. Now a
+ path string like "./." is recognized as "not a number" in-
+ stead of "division by zero".
+
+2015-03-18
+ Bugfix: roff: Prevent NULL pointer access when using .tr
+ with characters redefined by .char.
+
+ Bugfix: tbl: Prevent uninitialized pointer access.
+
+2015-03-13
+ Bugfix: Using basic control character (normally ".") or no-
+ break control charatcer (normally "'") as first argument to
+ .char made roff unuseable.
+
+2015-03-02
+ tbl: Option -Tlp configures output of table lines with ASCII
+ characters -, =, |, and + (similar to GNU nroff -Tascii).
+ Option -Tlocale in a non-UTF-8 locale now behaves as -Tlp.
+
+ Bugfix: tbl with option -TX: Double lines had not been
+ displayed correctly.
+
+2015-02-27
+ tbl: Option -Tlocale added which (in an UTF-8 locale) en-
+ ables output of table lines with Unicode glyphs.
+
+2015-02-26
+ Bugfix: The zero width flag (set e.g. by \z or \L) did not
+ work for Unicode characters. As a consequence e.g. \L could
+ not be used width \U'2551' to draw a double vertical line.
+
+2015-02-18
+ Bugfix: When there were several .ft requests to not mounted
+ fonts in short succession the output was wrong.
+
+2015-02-12
+ Read-only register .S added for DWB compatibility.
+
+2014-12-23
+ mdoc: Footer had not been displayed if page length was
+ reached.
+
+Release 141217
+==============
+
+2014-12-16
+ mdoc updated for processing up-to-date manpages. Still much
+ work needs to be done on mdoc.
+
+ nroff: Special character names of arbitrary length are now
+ possible.
+
+ nroff: Many special characters to -Tlp and -Tlocale (UTF-8)
+ added.
+
+2014-12-15
+ nroff: Compiled in "tab.lp" and "tab.utf8" removed. The
+ "nterm" directory is now required for nroff (at least with
+ file "tab.lp" or "tab.utf8").
+
+2014-12-13
+ Macro 'lsm' and number registers 'lsn' and 'lss' added.
+
+2014-12-05
+ Bugfix: .unformat: \e gets restored now.
+
+2014-11-06
+ Distingtion between BSD and non-BSD manuals removed (Anthony
+ J. Bentley).
+
+ pic, tbl, eqn: Allow whitespace between '.' and PS, PE, PF,
+ TS, TE, EQ, EN.
+
+2014-11-05
+ With command line option '-rcR=1' -man manpages are displayed
+ as one large single page.
+
+Release 141029
+==============
+
+2014-10-29
+ Documentation revised by Pierre-Jean Fichet: doc/fonts/
+ changed to use free available OTF fonts.
+
+2014-10-27
+ col(1) bugfix: Avoid to access chars before string.
+
+ troff: fdprintf changed back to libc fprintf.
+
+ troff: 32 bit bug in register and macro allocation fixed
+ (Bug reported by Anthony J. Bentley).
+
+ nroff/troff made -Wall clean.
+
+2014-10-22
+ OpenSolaris col(1) added.
+
+2014-10-06
+ Drawing of filled polygon (\D'P ...'), filled circle (\D'C
+ ...') and filled ellipse (\D'E ...') added.
+
+2014-09-21
+ *roff: Option -V for version information added.
+
+2014-09-14
+ Any version of roff (e.g. UNIX V7) does count \} as a macro
+ argument regarding \n(.$. This makes \n(.$ rather random if
+ you cannot force users to put \} on a separate line *or* to
+ put it behind the macro call and substract 1 from \n(.$. To
+ make \n(.$ meaningful again this bug has been fixed now, i.e.
+ \} is not considered as a macro argument anymore.
+
+2014-09-07
+ Documentation revised by Pierre-Jean Fichet: doc/just/ and
+ doc/quickstart/ changed to use free available OTF fonts.
+
+2014-09-03
+ Bug reported by Pierre-Jean Fichet fixed: If character '"'
+ is used in a .char request it did not work in a .if request
+ as the string compare delimiter.
+
+2014-08-28
+ Bug reported by Blake McBride fixed: Very old versions of
+ the mm macros inserted cut marks in the document for
+ typesetters which had used endless paper rolls. Although
+ they are only of historical significance they had never been
+ removed in the Solaris version of mm. They are now switched
+ of (via .rm )k).
+
+2014-08-23
+ Bugfix by Steffen Nurpmeso: In .rm code a function return
+ value is unchecked used as a pointer.
+
+2014-08-20
+ eqn(1) did not compile because of bison to BSD yacc differ-
+ ences. Sorry, had not tested on Linux this time...
+
+2014-08-18
+ Experimental bugfix: When .bp is directly followed by .. and
+ .bp triggers a macro which calls a macro then document text
+ is printed at that trap position. This bug is also in other
+ ditroff derivatives (e.g. DWB and Plan9). It is difficult to
+ track the bug to it's root cause so it is an experimental fix
+ at the moment.
+
+2014-08-17
+ \fP after \fS did set the font before the previous font and
+ not the previous one.
+
+2014-08-16
+ Bug reported by Pierre-Jean Fichet fixed: If character "!"
+ is used in a .char request it did not work in a .if request
+ as the NOT operator.
+
+2014-08-14
+ The eqn parser used type int for all token values--even
+ pointers. This may work fine on 32 bit hardware but causes
+ problems on 64 bit. A new data type had been introduced to
+ separate int tokens from pointers.
+
+ Also a bug in the parser regarding movements (e.g. FWD) had
+ been fixed.
+
+2014-07-27
+ A variable had been initilized after use. This variable
+ minus a literal value is used as an array index. When data
+ from the array is read an invalid memory segment is accessed.
+ This had caused crashes on at least OpenBSD.
diff --git a/CHANGES_GR b/CHANGES_GR
new file mode 100644
index 000000000000..db46cb0ce5dc
--- /dev/null
+++ b/CHANGES_GR
@@ -0,0 +1,1213 @@
+Release ...
+* [nt]roff: Fix the execution order of output line traps to be left-to-right,
+ and execute them before page traps, as documented (bug report by
+ Pierre-Jean Fichet).
+* troff/dpost: Support for URI links in PDF documents has been added
+ (contributed by Michael Piotrowski).
+* [nt]roff: Hyphenation patterns for Dutch have been added (contributed
+ by Erwin Koning).
+* troff/dpost: "kern" tables in TrueType fonts were indexed wrongly, which
+ mostly led to missing kerning pairs but might have led to completely wrong
+ kerning pairs under rare circumstances (patch by Matthew Fischer).
+* troff: The ".connectchar" request has been added to customize the set
+ of characters that are drawn as overlapping with the "\l" function.
+* troff: Allow "\~" to shrink, not just to stretch (bugreport by Roy Fisher).
+* troff/dpost: Embed TrueType fonts without a PostScript field correctly
+ (bug reported by FENG Yu Ning).
+* troff/dpost: Include the last character in a TrueType "post" 2.0 table
+ which was previously omitted; same for the last entry of the last subtable
+ in the "cmap" table (patch by Matthew Fischer).
+* troff/dpost: Accept "cmap" entries with Platform ID 3, Encoding ID 0
+ (Symbol) as Unicode tables (patch by Matthew Fischer).
+* troff/dpost: Handle TrueType fonts with format 12 cmap tables (UCS-4)
+ (patch by Matthew Fischer).
+* troff/dpost: Handle TrueType fonts in which glyphs appear multiple times
+ in Unicode tables gracefully (bugreport by Matthew Fischer).
+* troff/dpost: Handle TrueType files with a unitsPerEm value less than
+ 1000 ((bugreport by Matthew Fischer).
+* troff: Do not apply font-specific character translation inside \D,
+ which led to wrong output e.g. with \D'l' with an OpenType font with
+ the small caps feature activated (bug reported by Russ Cox).
+* dpost: Fixed the width of the "\(ul" character such that the lines of
+ wide boxed tables do not stick out at the right end anymore (bugreport
+ by Roy Fisher).
+* troff: The "\X" and "\Y" escape sequences are no longer interpreted
+ in copy mode, as there is no case when this would be useful, and the
+ behavior now matches groff and Plan 9 troff (thanks to Russ Cox).
+* dpost: Fixed a case in which invalid backslash sequences were generated
+ when insane sizes appeared in intermediate troff input (bug reported by
+ Russ Cox).
+* refer: The "-p" option now works with files that are not in the
+ current directory (bug reported by Michael Piotrowski).
+* lookbib: This version does not support the "-n" option, which was
+ described in the BSD-derived manual page (thanks to Michael Piotrowski).
+* [nt]roff: Do not go into an infinite loop if a tab character appears in
+ the arguments to ".warn" (bug reported by Russ Cox).
+* [nt]roff: Fixed a possible crash on 64-bit machines due to the choice
+ of an int for ptrdiff_t in paragraph-at-once justification (Steve Kargl),
+ and another one in the hyphenation code (Sean Jensen).
+
+Release 080407
+* [nt]roff: A type definition problem that caused an endless loop on
+ 64-bit systems has been fixed.
+* [nt]roff: The ".warn" request now accepts full numeric expressions
+ instead of plain numbers only.
+* -mg macros: When reading the output of "ls" to emulate ".mso", use
+ nofill mode to avoid artifacts from paragraph adjustment that cause
+ the request to fail.
+* eqn: Before an equation or binary operator, print a "\|" instead of
+ a "\^" if the preceding character is italic. The previous behavior
+ resulted from a too far-reaching change in release 051107. (Bug
+ reported by Joerg van den Hoff.)
+* eqn: Do not displace "hat" and "tilde" horizontally (bug reported by
+ Joerg van den Hoff).
+* eqn: Fixed the types of yylex() and yypv.
+
+Release 070908
+* troff: The ".hw" request now works correctly for words that contain
+ ligatures (bug reported by Dirk-Wilhelm Peters).
+* troff: Hyphenate correctly when a hyphenation point occurs inside a
+ ligature that follows a non-ASCII character. Previously, the word was
+ actually hyphenated too early in this situation (bug reported by
+ Dirk-Wilhelm Peters).
+* troff: Clear the font width cache before mounting a Type 1, TrueType,
+ or OpenType font. The previous failure to do so could lead to improper
+ alignment of lines when a font was mounted on the same font position
+ that was previously used (bug reported by Dirk-Wilhelm Peters).
+* [nt]roff: When converting floating point values in exponential notation
+ (1.234e5 etc.) to integers, apply the exponent before computing the final
+ position of the decimal point for better rounding behavior (bug reported
+ by Dirk-Wilhelm Peters).
+
+Release 070524
+* [nt]roff: Fixed an endless loop that occurred when ".ns" was active at
+ the end of a document and ".bp" was called from the page trap macro.
+* dpost: When including a picture, the PostScript "save" and "restore"
+ operators are now executed in correct order. Previously, the state
+ before page initialization was restored before including a picture.
+ Thus, graphics attributes such as colors were reset to the state
+ before page initialization, and drawing (as with pic) did not work
+ afterwards but resulted in a PostScript error.
+* [nt]roff: With paragraph-at-once adjustment, if a ".in" was encountered
+ before any input, its argument was ignored. This lead to zero indent in
+ combination with the 6h Edition manual page macros, and has been fixed.
+* troff: Do not break a line at a zero-width character, as e.g. inside a
+ "\X'...'" or "\z'...'".
+* troff: The ".flig" request can now use the \[] names for ff, ffi, and
+ ffl ligatures properly, i.e. ".flig R ff \[ff]" works (bug reported by
+ Sebastian Leusch).
+* troff: Pseudo-ligatures for ff, ffi, and ffl are no longer added to fonts
+ that do not contain the respective base characters. This makes it possible
+ to use a fallback sequence like ".fallback R XX FF", where XX does not
+ contain ff ligatures, but FF does, and to get the ligatures from font FF
+ as expected (bug reported by Sebastian Leusch).
+* [nt]roff: Using ".hy" or ".nh" is now effective for the last word of a
+ "\@{...\@}" inline environment.
+* The file "grap.defines" is now installed again; it was omitted in the
+ previous release.
+* When generating a RPM package, install all manual pages into
+ "/usr/share/man/5man" to avoid conflicts with manual pages of
+ packages supplied by the distribution default packages.
+
+Release 070318
+* [nt]roff: The concept of an "inline environment" has been introduced.
+ An inline environment contains the values of the current point size, the
+ current font, the current escape character, and other similar parameters.
+ It can be saved with "\@{" and then restored with "\@}". Unlike the "\s0"
+ and "\fP" escape sequences, inline environments form a stack. Thus after
+ executing "\fB...\@{\fR...\@{\fI...\@}...\@}", the current font is "B"
+ again, while it would be "I" with "\fB...\fR...\fI...\fP...\fP". Inline
+ environments can be used to represent constructs like "<i>...</i>" in
+ HTML, which would be translated as "\@{\fI...\@}".
+* [nt]roff: A modulo zero operation (N%0) is now ignored and causes a
+ warning of the "range" type to be issued. It could previously lead to
+ a core dump because of an arithmetic exception.
+* [nt]roff: In paragraph-at-once adjustment mode, ".in" and ".ll", when
+ invoked from traps, now have a permanent effect; such settings were
+ previously discarded at the end of the paragraph. What still does not
+ work is "'in" outside a trap with a value relative to the indent set
+ inside a trap.
+* [nt]roff: An internal problem with paragraph-at-once line breaking mode
+ has been fixed; it caused a ".in" or ".ll" command to be ignored under
+ rare circumstances.
+* [nt]roff: At the end of input in paragraph-at-once line breaking mode,
+ make sure that any partial paragraph is flushed before executing other
+ termination procedures. The previous failure to do so lead to missing
+ output at the end of the document if it did not fit on the current page.
+* troff, dpost: OpenType and TrueType fonts with Unicode platformID cmap
+ tables are now supported for reading Unicode character mapping tables.
+ Previously, only Microsoft platformID cmap tables were supported, and
+ others were ignored.
+* troff, dpost: Fixed a null pointer dereference that occurred when an
+ illegal glyph ID was encountered in the "liga" table of an OpenType
+ font.
+* troff, dpost: Apple TrueType fonts with a "true" header magic are now
+ actually supported; they could previously only be read by otfdump.
+* [nt]roff: ".ev \}" has now been actually fixed (Bugreport by Dirk-Wilhelm
+ Peters.)
+* -man macros: ".P" is now recognized; it is the same as ".PP".
+* -man macros: ".I \fR other-args" is not ignored anymore; same for
+ ".B", ".SM", and ".SB".
+* Unix 6th Edition manual macro packages have been added.
+* -mandoc macros: Recognize Unix 6th Edition pages.
+* showfont.sh: Font file arguments with absolute path names are now
+ supported.
+
+Release 070202
+* [nt]roff: The "\J" escape sequence has been introduced to specify a
+ default line breaking penalty; useful to discourage line breaks within
+ a person's name or a formula. Relative values in the "\j" sequence now
+ refer to the default penalty value.
+* dpost: A manual page has been added since it has now been released by
+ Sun under the CDDL license.
+* -man macros: The ".TP" macro has been fixed not to spread the initial
+ string. This is particularly for use in combination with "-mpadj" since
+ paragraph-at-once line breaking can lead to more spreading in the first
+ line.
+* [nt]roff: Special characters like "\}" do now terminate environment
+ names in arguments to the ".ev" and ".evc" requests as with other names.
+ Thus ".ev \}" is no longer misinterpreted as an attempt to change to an
+ environment named "\}". (Bugreport by Dirk-Wilhelm Peters.)
+* dpost: Cast size_t arguments to long for printf (Stefan Tramm).
+* The reference manual now uses the free TeX Gyre Termes fonts available
+ from <http://www.janusz.nowacki.strefa.pl/>. For this and the other
+ documentation texts, README files have been added to explain which
+ fonts are needed in order to build them. (Thanks to Werner Lemberg for
+ notification.)
+* Several manual pages have been moved from "BSD Compatibility" to the
+ standard sections if they had not actually been part of the SVR4 BSD
+ compatibility package.
+
+Release 061212
+* [nt]roff: Relative numbers can be used with the ".pshape" request now;
+ they refer to the preceding indent and line length pair, or, for the
+ initial pair, to the standard indent and line lenght settings.
+* [nt]roff: A warning of the "range" category is now printed when the
+ indent is set to a value exceeding the line length.
+* troff: In ".ad p" mode, when a line break was inserted after an
+ existing hyphen or em dash, another hyphen was added when the previous
+ characters formed a kerning pair. This has been fixed.
+* troff: In ".ad p" mode, when the character before the first interword
+ space formed a kerning pair with the space character, the line length
+ was incorrectly computed, and the line was prolongated by this amount.
+ This has been fixed.
+* troff: The "\{", "\}", and "\x" escape sequences inhibited kerning in
+ the adjustment computation but not in the output routine, which could
+ lead to prolongated output lines. They now inhibit kerning completely.
+* eqn: Generated equations no longer start with "\x'0'". This allows
+ kerning with the preceding character in an inline equation.
+* nroff: The content of a "\X" function is now ignored (instead of being
+ printed with zero width).
+* nroff: Combining UTF-8 characters are now assumed to have width zero.
+* nroff: The ".rd" request has been fixed; it had not been working since
+ the last release.
+* troff: The ".rd" request now accepts locale-dependent input characters.
+* [nt]roff: Fixed an error in ".ad p" mode which could lead to core dumps
+ with ".ev" requests that were not properly paired.
+* nroff: Hyphenation of words containing non-ASCII characters now really
+ works; such characters were erroneously dropped with the last release,
+ leading to incorrect hyphenations in some cases.
+* troff: Use of the "\s+[n]", "\s-[n]", "\s+'n'", or "\s-'n'" escape
+ sequence forms now leaves the arithmetic unit handling in a clean
+ state. The previous failure to do so lead to wrong numeric results
+ under certain circumstances; in particular, it caused the "over" eqn
+ keyword to produce incorrect output.
+
+Release 061114
+* [nt]roff: The units "t" (printer's point), "T" (printer's pica), "D"
+ (Didot point) and "C" (cicero) have been introduced.
+* [nt]roff: ".ad p" mode no longer employs a temporary diversion; the
+ lines are now written directly to the current output level, possibly
+ interrupted by trap processing. This makes it possible to use "'in"
+ and ".ll" inside a paragraph, although the line breaking decisions
+ may be suboptimal in this case.
+* [nt]roff: The ".hypp" request now accepts a third argument specifying
+ a penalty for hyphenating the last word of a paragraph.
+* nroff: Characters are now internally stored as 64-bit integers as
+ in troff. As a consequence, hyphenation of words in international
+ languages now works if non-ASCII characters are involved.
+* [nt]roff: A memory allocation error that could occur with extensive
+ use of output-line traps has been fixed.
+* [nt]roff: A control character written in a diversion is now correctly
+ interpreted when the diversion is re-read (unless in groff compatibility
+ mode). This fixes the ".AU" macro of "-mm".
+* [nt]roff: The "\R" escape sequence works correctly again; in the last
+ release, it had inserted the letter "R" into the text.
+* [nt]roff: Long names including a string in their name are now handled
+ correctly, e.g. ".nr x\*yz 1" no longer tries to set the register "x\*y"
+ to the value "z".
+* [nt]roff: Fixed some more memory access problems that had been introduced
+ with support for local variables.
+* [nt]roff: Fixed a non-local goto error that could lead to segmentation
+ faults with ".ad p" at the end of the input.
+* [nt]roff: Fixed a problem in ".bp" that could lead to the page number
+ being reset to zero in ".ad p" mode.
+* [nt]roff: A null pointer dereference in ".ad p" mode that occured when
+ nofill mode was activated while a partial paragraph was present has been
+ fixed.
+* -ms: The ".IX" index macro now works in ".padj" mode.
+* -me: The ".(x" and ".)x" index macros now work in ".padj" mode.
+* A "-mpadj" macro set has been added. It simply executes ".do padj"
+ and is useful to enable paragraph-at-once adjustment from the command
+ line.
+
+Release 061106
+* [nt]roff: Support for paragraph-based justification has been added,
+ enabled with ".ad p". The "Justification in Heirloom Troff" document
+ has been expanded to cover the new features.
+* [nt]roff: The ".hylen" request has been introduced to control the
+ minimum number of characters a word must contain in order to be subject
+ to hyphenation. The default is 5 independent of whether the ".hylang"
+ request is active (in that case, it previously had been 4).
+* [nt]roff: The ".pshape" request has been introduced to control the shape
+ of a paragraph in ".ad p" mode.
+* [nt]roff: The ".hypp" request has been introduced to control penalties
+ of hyphenation points in ".ad p" mode.
+* [nt]roff: The ".padj" request has been added; it enables ".ad p" mode
+ globally in all environments. It is most useful to enable paragraph-at-
+ once adjustment in existing documents.
+* [nt]roff: The "\j" escape sequence has been introduced to specify custom
+ penalties for line breaks in ".ad p" mode.
+* troff: The ".char" request is now able to construct replacements for
+ otherwise unknown locale-specific characters.
+* troff: Fixed a typo in the hyphenation code that could result in the
+ insertion of a large negative vertical motion in a word containing a
+ character above Unicode point U+0800.
+* troff: Fixed "\H" and "\S" to become effective if positioned directly
+ after a font change (Bugreport by Dirk-Wilhelm Peters).
+* [nt]roff: The ".pull" request (introduced in the previous release) has
+ been removed again. It is recommended that the traditional approach to
+ re-divert text is used instead.
+* [nt]roff: Fixed an invalid memory access that had been introduced with
+ local strings in the last release.
+* troff: Fixed a segmentation violation if a ligature in a hyphenated
+ word was not in the current font (Bugreport by Dirk-Wilhelm Peters).
+* troff, dpost: Fixed a rounding error when reading TrueType metrics.
+* dpost: Fixed a bug introduced with the previous release that caused
+ PostScript errors on a page following colored text unless the "-e"
+ option was explicitly specified.
+* dpost: Now handles DSC font comments in included PostScript files and
+ supplies glyph data for them if specified with a troff ".fp" request.
+* dpost: Fixed to compile on NetBSD again (Bugreport by Dirk-Wilhelm Peters).
+* eqn: Handles fractional point sizes with "size" and "gsize" now.
+* tbl: Fixed a segmentation fault with empty tables that occurred due
+ to the changed memory layout introduced in the last release.
+* A "Quickstart Guide" document has been added. It is aimed at people
+ who know other variants of troff to some extent and want to explore
+ Heirloom troff.
+
+Release 061010
+* A simplistic XSLT stylesheet to convert OpenDocument text to troff input
+ has been added. See the comments in the file "stuff/odt2tr.xsl" for usage
+ instructions.
+* [nt]roff: Local strings and number registers are now supported. They can
+ be defined using ".lds", ".lnr", and ".lnrf". A local string or register
+ is visible only in the instance of the macro in which is has been defined
+ and can then be accessed like a standard global string or register.
+* [nt]roff: The ".pull" request has been introduced to print text of a given
+ height from a diversion and remove it afterwards.
+* [nt]roff: The ".writem" request has been added to write the contents of
+ a string, macro, or diversion to a file stream.
+* [nt]roff: The ".dwh" and ".dch" requests have been introduced to allow
+ multiple diversion traps in the same diversion.
+* [nt]roff: The ".trin" (translate but retranslate with ".asciify") and
+ ".trnt" (translate but not in transparent mode) requests have been added.
+* [nt]roff: The "\n[.dilev]" register contains the current diversion level.
+* [nt]roff: The "\B" escape sequence (check for valid numerical expression)
+ is now available in regular mode too, not only in groff compatibility mode.
+* troff: The second argument to the ".fkern" request now specifies a minimum
+ absolute amount for kerning pairs read from font metrics files. Kerning
+ pairs with smaller adjustments are ignored.
+* tbl: Can now optionally use graphic drawing commands (troff "\D") instead
+ of repeated-character line drawing (troff "\l" and "\L"). The "graphics"
+ option enables it per table, and the "-g" command line option enables it
+ globally.
+* tbl: The static limits on the number of table lines, columns, and heading
+ lines have been removed. In effect, all lines of a table are considered
+ when the column widths are computed, and ".T&" can occur at any line.
+* tbl: The "nokeep" option causes tbl not to write a ".ne" command for a
+ boxed table.
+* troff: The CW, CI, CB, and CX fonts no longer substitute the "fi" and "fl"
+ ligatures with the "devps" device. This is consistent with "devpost".
+* [nt]roff: If a word starts with a motion followed by a hyphenation
+ indicator, such as "\h'1m'\%text" or "\|\%text", hyphenation for the
+ word is now suppressed, and no hyphen is generated.
+* [nt]roff: When text from a diversion is output or rediverted, it is no
+ longer subject to character translations specified with ".tr" and ".ftr".
+* [nt]roff: In groff compatibility mode, unless a string is interpolated
+ with explicit arguments, the arguments to the surrounding macro instance
+ remain visible and can be referenced by "\$" from within the string.
+* [nt]roff: The ".length" and ".index" request now strip an initial """ in
+ their last argument to allow initial white space.
+* [nt]roff: The blank line macro is not called when a diversion is reread
+ in nofill mode anymore.
+* troff: The escape sequence "\s[0]" now resets the point size to the
+ previous value as "\s0" does.
+* [nt]roff: Arbitrary delimiters are now allowed with "\s''" escape
+ sequences.
+* [nt]roff: Fixed a bug that caused ".shift" without arguments to be ignored
+ if the last previous numerical expression was invalid.
+* troff: The indent of the current line is no longer part of a PDF link
+ that continues from the previous line.
+* [nt]roff: ".rm" and ".rr" no longer issue a warning if one of their
+ arguments is not a defined macro or register, respectively.
+* troff: Fixed an error that sometimes caused the "x X Track" command to miss
+ in intermediate output.
+* troff, dpost: The short font name is now part of the "x font" commands
+ in intermediate output for Type 1, TrueType, and OpenType fonts.
+* troff: Before generating an "x X" command because of a "\X" or "\Y" escape
+ sequence, the current horizonal position is now emitted to intermediate
+ output. This makes input like "\h'1i'\X'anything'" work as expected.
+* troff: Changes between environments with different ".ss" settings are now
+ handled correctly.
+* dpost: The default encoding for the "ps" device is now "3".
+* dpost: The PostScript "awidthshow" operator is now used with the "-e2" and
+ "-e3" encoding options, resulting in reasonable output in combination with
+ the ".track" request.
+* dpost: With the "-e2" and "-e3" encoding options, use only word spaces as
+ indicated by troff for the "widthshow" PostScript operator. This usually
+ results in slightly larger PostScript output but is better encodable when
+ distilled to PDF so that PDF files become smaller.
+* troff: An internal character width caching error has been fixed; it could
+ lead to misaligned characters when setting text in fonts containing more
+ than 400 characters.
+* troff, dpost: Can now handle fonts with up to 65534 characters.
+* eqn: Avoid to recognize delimiters inside troff escape sequences with "("
+ or "[" as well as directly behind a sequence of backslash characters.
+* -mm macros: Fixed a bug which caused .ML output to disappear unless in
+ troff -x0 mode.
+
+Release 060905
+* [nt]roff: The new ".brnl" request causes a break each time a newline is
+ encountered at the end of a text input line. Unlike nofill mode, text is
+ still wrapped to the line length.
+* [nt]roff: The new ".brpnl" request causes a break and a spread each time
+ a newline is encountered at the end of a text input line (as if it were
+ attached a "\p"). The "\p" escape sequence changes its semantics in this
+ mode and causes a break without a spread.
+* [nt]roff: The new ".lpfx" request allows to print a string whenever
+ a new output line is started. This is mainly useful to implement a
+ historic form of block quotation.
+* [nt]roff: The predefined number registers "\n[.in]", "\n[.hy]",
+ "\n[.int]", "\n[.lt]", "\n[.pn]", "\n[.psr]", and "\n[.sr]" have been
+ added.
+* [nt]roff: The semantics of the number registers "\n(.x" (remaining space
+ on current output line) and "\n(.y" (current actual indent) are now
+ documented.
+* [nt]roff: The "\n[.kc]" register has been introduced; it holds the width
+ of a word interrupted with "\c" on output.
+* [nt]roff: Control and escape characters written in a diversion are now
+ regular characters in groff compatibility mode.
+* [nt]roff: It is not a fatal error if the file specified with ".so" is not
+ accessible in groff compatibility mode.
+* [nt]roff: The value of the "\n(.k" register is computed differently in
+ groff compability mode now.
+* [nt]roff: The -mg macros now provide the fonts "C" and "CR".
+* [nt]roff: The -mg macros now provide an emulation of the ".mso" request.
+* [nt]roff: The command line options "-ds=x" and "-ra=N" are now accepted,
+ thus the string or register name before "=" can consist of more than one
+ character.
+* [nt]roff: The ".rd" request now works again; it caused a segmentation
+ fault since several releases.
+* [nt]roff: Formatting of a ".char" object immediately before a trap is
+ executed no longer causes pending input text to disappear (bug reported
+ by Sebastian Leusch).
+* troff: The escape sequence form "\s[+-]'n'" now works with fractional
+ point sizes.
+* troff: With xflag 0, fractional parts and units are now ignored with
+ the ".ps" command.
+* [nt]roff: With xflag 0, ".if !..." works correctly again.
+* [nt]roff: When copying text to a macro, if a line appeared that was a
+ prefix of the terminating macro, its last character was copied twice
+ (e.g. "..." with the standard ".." was copied as "...."). This has been
+ fixed.
+* -me macros: The macros now work with xflag > 0.
+* [nt]roff: The distance to the next trap, and, accordingly, the "\n(.t"
+ register, can now be larger than the maximum allowed motion with "\h"
+ and "\v". This allows very long pages without a "trap botch" error,
+ although vertical motions on such pages may require multiple "\v"
+ commands.
+* [nt]roff: Fixed a reallocation problem that caused segmentation faults
+ with some compilers.
+* [nt]roff: Fixed the "-u" option not to cause a segmentation fault.
+* [nt]roff: The "\n(.S" predefined number register has been removed again
+ since it conflicts with use of this name by "dot -Tpic". (The "\n[.tabs]"
+ register continues to be available with the same semantics.)
+* troff: There is now a "lc_ctype" keyword in the DESC file for the sake
+ of legacy post-processors that do not understand "x X LC_CTYPE".
+* dpost: Use the device given by "x T" in intermediate language for reading
+ font files only if its name starts with "ps" or if it has the "afmfonts"
+ keyword in its DESC file; otherwise use "devpost".
+* tbl: The forms "f (X)", "w (x)", and "fX." are now accepted in column
+ specifications.
+
+Release 060813
+* [nt]roff: A new type of traps is available: output-line traps. They are
+ set with the new "\P" escape sequence and are invoked when the line that
+ contains the corresponding sequence has been output.
+* [nt]roff: The ".index" request has been added to determine the position
+ of a string within a string or macro.
+* [nt]roff: Floating-point registers have been introduced; they can be
+ created and modified with the ".nrf" request and are otherwise like
+ standard integer number registers, with which they share a common name
+ space.
+* [nt]roff: The ".if f expr" condition has been introduced to evaluate
+ an expression with floating-point computation.
+* [nt]roff: Exponential notation, as in "1e+10", is now supported in
+ numerical expressions.
+* [nt]roff: Debugging requests for watching macros, strings, and number
+ registers have been added.
+* [nt]roff: The ".errprint" request has been added to write custom strings
+ in the same format as internal error messages.
+* [nt]roff: The ".cp" request has been added to control compatibility with
+ groff.
+* [nt]roff: The "-mg" macro package has been added for improved support of
+ groff documents, preprocessors, and macro sets.
+* [nt]roff: The ".while", ".break", and ".continue" requests have been
+ added as another method to process input repeatedly.
+* [nt]roff: Space characters inside parentheses in numerical expressions
+ are now permissible, i.e. they are discarded and do not terminate the
+ expression.
+* [nt]roff: The ".char", ".fchar", and ".rchar" requests have been added
+ to transform a single input character to multiple output characters.
+* [nt]roff: The ".ecs" and ".ecr" requests have been added to save and
+ restore the escape character.
+* [nt]roff: The ".shc" request has been added to set the soft hyphen
+ character.
+* [nt]roff: The ".hcode" request has been added to specify character
+ mappings for hyphenation purposes.
+* [nt]roff: The sets of sentence-ending and transparent characters are
+ now configurable with the ".sentchar" and ".transchar" requests.
+* [nt]roff: The set of optional line break characters (normally hyphen
+ and em dash) is now configurable with the ".breakchar" request.
+* [nt]roff: The ".nhychar" request defines a set of hyphenation-
+ inhibiting characters (as hyphen and em dash with traditional troff
+ hyphenation).
+* troff: The second argument to the ".ss" request now actually sets the
+ size of the sentence-end space instead of just switching it on or off.
+* [nt]roff: The ".unformat" and ".asciify" requests have been added to
+ remove the effects of adjustment, and font and point size information,
+ respectively, from a diversion.
+* [nt]roff: The "\Z'string'" escape sequence (print string and restore
+ the position afterwards) has been introduced.
+* [nt]roff: The ".als" request has been added to create an alias name
+ for a request, macro, or string.
+* [nt]roff: The ".aln" request has been added to create an alias name
+ for a number register.
+* [nt]roff: The ".rnn" request has been added to rename a number register.
+* [nt]roff: The ".box" request has been added; it is like ".di" but saves
+ and restores a previous partially filled line.
+* [nt]roff: The ".spacewidth" request has been introduced to default to
+ the width of the space character as obtained from the font metrics file.
+* [nt]roff: The ".rj" request (right-align next input lines) has been
+ added. The ".rj" number register that holds the number of remaining
+ lines to be right-adjusted has been added.
+* [nt]roff: The ".ce" number register that holds the number of remaining
+ lines to be centered with the ".ce" request has been added.
+* troff: The "\Yx", "\Y(xx", or "\Y[xxx]" escape sequence has been added
+ to output the contents of the string or macro x, xx, or xxx, respectively,
+ as a device control function.
+* [nt]roff: The "\$0" escape sequence has been added to refer to the name
+ of the current macro or string.
+* [nt]roff: The "(c;e)" numerical expression function has been added to
+ evaluate "e" using "c" as default scale indicator.
+* [nt]roff: The "M" (Em/100), "s" (= "u"), and "z" (= "p") scale indicators
+ have been added.
+* [nt]roff: The ".ta T Nt Mu" syntax to set tab stops repeatedly is now
+ supported.
+* [nt]roff: The "\n(.S" and "\n[.tabs]" registers have been added to save
+ and restore tab stops.
+* [nt]roff: The "\n[.ev]" number register has been added as a method to
+ determine the name of the current environment.
+* troff: The "\n[rst]" and "\n[rsb]" registers are set by the width function
+ to the highest and lowest extent of the bounding box of any character.
+ This currently only works for Type 1 and TrueType fonts.
+* troff: The "\n[.cht]" and "\n[.cdp]" registers are set to the highest
+ and lowest extent of the bounding box of the previous character. This
+ currently only works for Type 1 and TrueType fonts.
+* [nt]roff: In extension level 1, long string "\*[xxx]", register "\n[xxx]",
+ and font "\f[xxx]" names are no longer recognized unless they are on a
+ line beginning with the ".do" request.
+* [nt]roff: The "\n[.ps]" number register, which holds the current font
+ size in device units, has been added.
+* [nt]roff: The "\E" escape sequence has been fixed; it does not resolve
+ to a printable but to an effective escape character now.
+* [nt]roff: The "\)" escape sequence (like "\&" but transparent for
+ sentence ending) has been added.
+* [nt]roff: Static limits on word and line size have been eliminated.
+* [nt]roff: The "\{", "\}", "\&", "\%", "\c", and "\(space)" escape
+ sequences terminate two-character request names now.
+* [nt]roff: The ".tm" and ".write" commands now discard formatted motion
+ sequences.
+* troff: The ".psbb" request now reads a "%%HiResBoundingBox" DSC comment
+ in preference to "%%BoundingBox"; the registers it assigns to are now
+ floating-point registers.
+* troff: The ".psbb" request now properly supports the "(atend)" syntax in
+ PostScript DSC input files.
+* nroff: The ".psbb" request has been made a no-op since nroff cannot
+ otherwise handle EPS documents anyway.
+* [nt]roff: The "right-brace" warning category has been added.
+* [nt]roff: Calls of ".vs" that result in negative numbers are now
+ ignored.
+* [nt]roff: The width function "\w" now takes pairwise kerning into
+ account.
+* [nt]roff: The ".return" request has been fixed not to ignore the next
+ line of input when followed by text on the same line.
+* [nt]roff: The second argument of the ".ss" request now also applies
+ to sequences of space characters that follow a sentence end character.
+* [nt]roff: The "\k[name]" escape sequence has been fixed to work if
+ "name" has not been previously been used.
+* [nt]roff: The "\(dq" character has been introduced as an alternate name
+ for the ASCII double quote character.
+* dpost: Character height and slant changes now only apply to the current
+ font as documented.
+* tbl: When ending macros in generated code, ".00" is now used instead
+ of "..". This allows the use of ".ig" and similar requests within "T{"
+ etc. without interference.
+* pic: Accept "{lower|upper} {left|right} of" as aliases for ".nw", ".sw",
+ ".ne", and ".se".
+* pic: Continued newlines in expressions like "center \<newline>of" are
+ now accepted.
+
+Release 060716
+* troff: The ".letadj" request has been added to enable dynamic letter
+ spacing and letter reshaping when justifying lines.
+* troff: Font and size attributes of space (and newline) characters in
+ input are now honored for computing widths and kerning pairs. Previously,
+ font and size of space characters were always that of the next printable
+ character; this is retained with the -x0 option. This means that e.g. in
+ "\f(CWabc \fRdef", the size of the space is now computed from the
+ constant width font instead of the roman font.
+* [nt]roff, dpost, daps: The character name "\(rs" for backslash has been
+ introduced.
+* nroff: "\[xx]" and "\C'xx'" result in the same character as "\(xx" now.
+* [nt]roff: The ".nx" request now works again, it previously caused
+ a segmentation fault because of a null pointer dereference (bug
+ reported by Michael Hobgood).
+* [nt]roff: With the ".hylang" request, words that consist of four
+ characters are now subject to hyphenation (with the traditional
+ hyphenation, five characters are the minimum length).
+* [nt]roff: The ".hy" request accepts the additional flags 16 and 32 that
+ allow the last or first character of a word, respectively, to be split
+ off.
+* troff: Giving no arguments to ".minss" now deactivates this mechanism.
+* troff: ".minss" now has no effect unless in ".ad b" mode as documented.
+* [nt]roff: The ".ss", ".sss", ".minss", ".lspmin", ".letss", ".lspmax",
+ ".lshmin", ".lshmax", ".lc_ctype", ".hylang", and ".fzoom" number
+ registers have been added to retrieve the current values set with the
+ respective requests.
+* [nt]roff: The forms "\s+-'dd'", "\s+-[dd]", and "\s[+-dd]" of the size
+ change escape sequence are now understood.
+* [nt]roff: The ".nop text" request (use text as input) has been added.
+* [nt]roff: The escape sequence "\R'R +-N'" to set the value of a number
+ register has been added.
+* [nt]roff: String references now accept arguments with the \*[xx arg ...]
+ escape sequence.
+* [nt]roff: The ".blm xx" request has been added, it causes ".xx" to be
+ called whenever a blank line is encountered.
+* [nt]roff: The ".itc" request (input trap not counting "\c") has been
+ added.
+* [nt]roff: The ".hlm" request and the ".hln" and ".hlc" number registers
+ have been added to control the maximum number of consecutive hyphenated
+ lines.
+* [nt]roff: The "\#" escape sequence (comment including newline) has been
+ added.
+* [nt]roff: With xflag 3 and warning "mac" deactivated, if ".xx" was a
+ defined request and ".xxx" was not, ".xx" was executed for ".xxx".
+* [nt]roff: Several segmentation violations that occurred with arbitrary
+ binary data as input have been fixed.
+* troff, dpost, otfdump: The operator 12 in CFF Top DICT entries was not
+ handled correctly, resulting in misleading error messages with some
+ OpenType fonts. This has been fixed (bug reported by D. Jeff Dionne).
+
+Release 060619
+* troff: The ".minss" request has been added. It allows troff to decrease
+ the size of the word space below the value set by ".ss" when adjusting
+ lines at both margins.
+* troff: The ".kernpair", ".kernafter", ".kernbefore", ".lhang", and
+ ".rhang" requests now also accept groups of characters to which the
+ same kerning/hanging value is applied.
+* [nt]roff: It is now possible to use strings inside macros names (e.g.
+ ".xx\*(yy" as documented.
+* [nt]roff: The ".if d", ".if n", and ".rr" requests erroneously applied
+ to a shorter two-character name if an undefined longer name was given
+ as an argument; this has been fixed.
+* troff: The ".fkern" request now properly refers to a single mounted
+ instance of a font; it previously affected all mounted instances of
+ one font metrics file.
+* troff: Character replacements with ".tr" where the target character
+ does not originate from the current font but is found in the fallback
+ sequence are now performed correctly. Previously, an invalid heap
+ access could occur, resulting in the choice of random characters.
+* troff: Margin characters set with ".mc" are now correctly placed in
+ combination with hanging characters set with ".rhang".
+* [nt]roff: It is legal to call ".it" or ".dt" without arguments, thus
+ a warning is no longer issued in this case.
+* troff: Selecting one of the base fonts with ".ft" without a previous
+ ".fp" works again; it was broken in the last release.
+
+Release 060430
+* troff/dpost: Links and anchors in PDF documents can now be defined;
+ "\A" and "\T" escape sequences have been introduced for this.
+* [nt]roff: Tail-recursion elimination for macro calls has been added.
+ This allows recursive macro calls of arbitrary depths when the call
+ to itself occurs in the last line of the macro.
+* troff: The ".fkern" request has been introduced to disable the use of
+ the kerning tables of specific fonts.
+* [nt]roff: The "\V" escape sequence has been introduced; it prints the
+ value of an environment variable.
+* troff: An explicit "N" font register argument to the ".fp" request may
+ now be an arbitrary number between 1 and 255.
+* troff: The "\n[.fp]" number register has been introduced to make it
+ possible to determine the next unused font register.
+* [nt]roff: The "-daS" command line option has been added to define the
+ string "a" to "S".
+* [nt]roff: The ".output" request has been added to write a command to
+ intermediate output regardless of whether there is a current diversion
+ or not (unlike "\!").
+* [nt]roff: A warning is now issued when a non-ASCII byte is found in
+ a name (of a request, number register, etc.) with the "input" warning
+ category.
+* [nt]roff: Long request names as second arguments to macro definitions
+ (as in ".de xx longname") are now handled correctly.
+* [nt]roff: The ".close" request has been fixed; repeated calls to it
+ could previously result in lost file stream descriptors.
+* troff, otfdump, dpost: The end of floating point values in CFF data is
+ now properly recognized; the previous failure to do so could result in
+ errors like "invalid operand b0 range 255" with valid OpenType fonts.
+* troff: In TrueType fonts with version 3.0 "post" tables, characters that
+ lack a Unicode mapping can now be accessed as "\[index0xN]".
+* [nt]roff: The need for the sbrk() system call has been eliminated; the
+ regular system malloc() is now used.
+
+Release 060409
+* dpost: An error that could lead to invalid PostScript output when the
+ last character of a long output string sequence was a backslash has
+ been fixed.
+* troff: The ".flig" request has been enhanced to enable the definition
+ of arbitrary font-specific ligatures, e.g. ".flig R Th \[T_h]" could
+ be used for a "Th" ligature. The previous syntax is still accepted.
+* troff: If a hyphentation point occurs within an automatically created
+ ligature, the ligature is now split into its parts.
+* troff: The "\;" escape sequence has been introduced as a ligature
+ suppressor without other side-effects.
+* troff: The ".fdeferlig" request has been introduced. It defers building
+ of a ligature by one character, e.g. if both "ff" and "fi" are defined
+ as ligatures and "ffi" appears in input, a single "f" followed by the
+ "fi" ligature can be constructed instead of a "ff" ligature followed by
+ a single "i".
+* [nt]roff: The hyphenation language as set by the ".hylang" request is
+ now specific to the current environment.
+* [nt]roff: The ".substring" and ".length" requests have been added to
+ replace a string by a substring of it and to determine the length of
+ a string, respectively.
+* troff: No longer prints a warning when a font selected with ".ft" is
+ not currently mounted but can be mounted in position 0.
+* nroff: No longer prints a warning when a font is selected with ".ft".
+* nroff: Multibyte characters are now emboldened correctly. Previously,
+ the number of backspace characters output corresponded to the length
+ of the multibyte sequence instead of the column width of the character
+ (bug reported by Alexander E. Patrakov).
+* dpost: The line width for drawing has been fixed; previously, lines
+ were 100 times too slim with the "ps" device.
+* troff: The "\C'xxx'" escape sequence is now available; it selects a
+ named character with the same effect as "\[xxx]".
+
+Release 060321
+* An revised version of the "Nroff/Troff User's Manual" is now available
+ in the directory "doc/troff". It replaces the "NEWS" and "PDFS" text
+ files; these have been removed.
+* A typeset version of "Font Handling in Troff With PostScript Devices"
+ is now available in the directory "doc/fonts". It replaces the "FONTS"
+ text file that has been removed.
+* [nt]roff: Hyphenation is now enabled by default. This is compatible
+ with most other versions of troff, but differs from Solaris troff.
+* troff/dpost: The characters \(or \- \` \' " # < > @ \ ^ ~ are now
+ taken from the current font instead of the special font by default
+ if possible with the "ps" and "psmed" devices. The new DESC keyword
+ "allpunct" controls this.
+* troff: Kerning pairs from font metrics files that include "\[name]"
+ characters now work correctly; they could previously apply to wrong
+ characters with font files containing more than 260 characters, and
+ were ineffective with smaller ones.
+* troff: OpenType and TrueType kerning pairs with a position difference
+ of zero are now completely ignored. They could previously overwrite a
+ previous positioning difference for the same pair. Also if a kerning
+ pair occurs more than once in the metrics file, the first definition
+ read is now used instead of the last one.
+* troff: In an OpenType font, if a kerning pair occurs in both a "Pair
+ Positioning Adjustment" format 1 (kerning by specific glyphs) and a
+ format 2 (kerning by glyph classes) table, the format 1 definition
+ is now always used.
+* tbl: Storage space expansions because of long lines inside a table are
+ now done properly.
+* troff: The "\n[.ascender]" and "\n[.descender]" registers contain the
+ typical extents of the current font above and below the base line,
+ scaled to the current point size.
+* troff: Zero-width space characters are no longer considered word space
+ when a line is justified. This fixes "\X" device control functions in
+ diversions.
+* dpost: The metrics of the underscore character in the PostScript Symbol
+ font (which is mapped to "\(ul" and is used to draw horizontal lines)
+ are now dynamically adjusted in the generated PostScript code. This
+ works around varying metrics of this character in different versions
+ of the Symbol font. Note that this does not work in PDF unless the
+ font is embedded at the time the document is distilled.
+* dpost: The "\(sq" glyph is now filled in any font with a "Weight" entry
+ of "Bold", "Ultra", or "Heavy".
+* dpost: The "post" device works again; dpost previously crashed with a
+ null pointer dereference when it was used.
+* troff/dpost: EPS files that contain carriage-return characters as
+ newline indicators are now correctly handled with the ".psbb" request
+ and the picture inclusion mechanism.
+* [nt]roff: The "\(.z" number register handles diversion names longer
+ than two characters properly now.
+* [nt]roff: Requests like ".bd" or ".kernpair" now warn when an invalid
+ font name is given.
+* [nt]roff: No "illegal number" warning is printed anymore when a "\}" is
+ found as part of a possibly numeric argument, as in e.g. ".bp \}".
+* [nt]roff: The ".mc" request does not require an argument so no warning
+ is printed if it is given none.
+* dpost: When a PDFMark Bookmark command is issued at the beginning of
+ a page of intermediate output before any text has been printed, the
+ value "4" is now substracted automatically to make the PDF viewer
+ show the whole page top including margin.
+* -mm macros: An error that was introduced when the macros were converted
+ to use spaces between a request name and its arguments has been fixed.
+ It sometimes caused the page offset to be wrong.
+
+Release 060221
+* [nt]roff: With the ".hylang" request, the individual parts of words
+ composed by "-" or "\(em" characters are now subject to hyphenation.
+* troff: The ".fspacewidth" request has been introduced to set the width
+ of the space character of a font.
+* troff: For monospaced fonts, the space width is now set to the size of
+ the "space" character in the AFM/TrueType/OpenType font metrics. This
+ matches the traditional behavior of the "post" device with the "Courier"
+ font, but was previously not done for "ps", which led to incorrect
+ formatting.
+* troff: Non-ASCII small characters were erroneously mapped to uppercase
+ input characters. They are now mapped to lowercase input characters as
+ it is done for ASCII characters.
+* troff: When a regular font was chosen as fallback for an expert font,
+ non-ASCII characters were selected from the regular font even if a
+ matching character in the expert font existed.
+* [nt]roff: Additional conditions are available with ".if": "c" to test
+ for a glyph in the current font, "d" to test for the existence of a
+ macro, and "r" to test for the existence of a number register.
+* [nt]roff: Three additional operators for numeric expressions are
+ available: "<>" (not equal), "<?" (minimum), and ">?" (maximum).
+* [nt]roff: The input line number is now adjusted at a different place,
+ fixing many glitches which previously caused it to be wrong.
+* tbl: The ".lf" troff request is now used internally to adjust troff's
+ idea of the current input file and line number, making troff warnings
+ more helpful.
+* tbl: The ".warn" troff request is now used internally to save, disable,
+ and restore warning messages around those portions of tbl output which
+ use potentially undefined requests or registers.
+* pic: The comments before ".PS" containing bounding box information are
+ now prefixed by '.\"' instead of '...' for compatibility with ".warn".
+* [nt]roff: The "\n[.warn]" number register is now properly changed after
+ a call to ".warn" with no arguments.
+* pic/dpost: The PostScript implementation of the "Dl" (draw line)
+ operation now rounds the current point to the troff device resolution
+ when testing for equality. This is another fix for "box fill 0" in pic.
+* troff/dpost: A "x X LC_CTYPE localename" device command has been added.
+ This ensures that troff and dpost use the same locale for generating
+ PDF bookmark entries.
+* dpost: CFF font data is now ASCII hex encoded in PostScript output.
+
+Release 060208
+* troff: Eastern European characters for Unicode/PostScript conversion
+ have been added (patch by Vladimir B. Machulsky).
+* troff, dpost: Font file names can now contain spaces or bytes outside
+ the ASCII range. A "%xx" escape sequence, where "xx" are hexadecimal
+ digits, has been introduced in order to achieve this. The description
+ of ".fp" in the "NEWS" file contains details on this.
+* [nt]roff: The ".vpt" request has been added to make it possible to
+ disable vertical position traps.
+* dpost: With the ".track" command, the tracking amount was not properly
+ initialized at every page of PostScript output. This could result in
+ incorrect arrangements of characters.
+* [nt]roff: Diagnostic messages now include the number of the current
+ output page.
+* [nt]roff: Page breaks inside a diversion are now properly ignored.
+* dpost: When a font was mounted replacing another font on the same
+ physical position, non-ASCII characters were not printed correctly
+ afterwards (bug reported by Vladimir B. Machulsky).
+* dpost: The BookMark device command now causes "/XYZ" destination keys
+ to be written to PDF documents. This has the effect that the current
+ zoom factor is retained when a bookmark is selected.
+* pic, grap: Fixed 8-bit input in label texts (bug reported by Vladimir
+ B. Machulsky).
+* troff: The ".trimat", ".bleedat", and ".cropat" requests caused some
+ following requests (e.g. ".fp") to fail because of an improper reset
+ of number scaling (bug reported by Sebastian Leusch).
+* troff: If the "\~" character appeared as part of the first word of
+ a line not immediately following a break, the current line and the
+ line before it were not justified correctly (bug reported by
+ Christian Schaper).
+* [nt]roff: The ".spreadwarn" request was wrongly called ".spreadlimit"
+ in the NEWS file.
+
+Release 060114
+* troff: The internal codes for PostScript characters are now unique across
+ all fonts. In effect, requests like ".tr" or ".lc" now handle arbitrary
+ characters correctly, including locale-dependent ones.
+* [nt]roff: The ".mk" request now accepts long register names.
+* [nt]roff: Using ".wh" with an undefined long macro name now works as with
+ undefined short names; the macro is executed once it has been created.
+* troff/dpost: PostScript characters are now passed as "CPSname" in the
+ intermediate output (instead of "Nnnn").
+* troff/dpost/otfdump: Apple TrueType fonts with a "true" header magic can
+ now be read (thanks to Stefan Tramm).
+* troff/dpost/otfdump: TrueType handling has been made more robust against
+ an error in Microsoft/Unicode "cmap" subtables.
+* dpost: Error messages now include the number of the current output page.
+* dpost: Color bars can now be generated with "-M colorbars", star targets
+ with "-M startargets", and all marks are enabled with "-M all".
+* dpost: The ".mediasize" request now also causes a "%%DocumentMedia:" DSC
+ comment to be written. This enables some PostScript previewer programs
+ to determine the document size.
+* troff: On a font mounted with ".fps punct", the "\(en" character is now
+ available as expected.
+* pic/dpost: The PostScript implementation of the "Dl" (draw line)
+ operation has been fixed to move to the beginning of the line properly
+ even when "inpath" is set. This fixes "box fill 0" for pic.
+* dpost: The geometry setup for drawing commands is now executed in the
+ setup section for each page. This makes pic work with filters that
+ re-arrange pages in PostScript.
+
+Release 051227
+* [nt]roff: A new extension level "3" is available. In this level, undefined
+ long requests whose first two characters form an existing short request
+ are ignored instead of being interpreted as short requests. Also string
+ and number register references are interpreted at any position of a
+ long request name in this level.
+* troff: Unicode mapping tables from OpenType and TrueType fonts are now
+ used for converting input characters.
+* troff: Locale-dependent input characters for which no matching glyph can
+ be found are now replaced by spaces.
+* troff: The ".fps" request has been introduced to map troff special
+ characters like "\(*a" or "\(+-" to a custom font.
+* [nt]roff: The warning category "missing" is now available; it includes
+ warnings about missing required arguments to requests.
+* [nt]roff: The warning category "delim" is now available; it includes
+ warnings about missing delimiters to escape sequences.
+* troff: The ".trimat", ".bleedat, and ".cropat" " requests have been added
+ to include advice about the "TrimBox", "BleedBox", and "CropBox" page
+ parameters to a PDF distiller command, particularly for PDF/X generation.
+* dpost: The "-M" option has been added. It can be used to print cut marks
+ ("-M cut"), registration marks ("-M registration"), or both cut marks and
+ registration marks ("-M cut:registration") in combination with the
+ ".trimat" troff request.
+* [nt]roff: The ".af" request now handles long register names correctly.
+* troff: Kerning now works correctly in combination with leaders and
+ fields.
+* troff: The ".tm" and ".write" requests now correctly handle locale-
+ dependent input characters as well as one-character escape sequences
+ that are interpreted in copy mode such as "\&".
+* [nt]roff: The "-msafe" macro now correctly removes the ".do pso",
+ ".do open", and ".do opena" requests in -x1 (default) mode. They
+ were previously removed in -x2 mode only.
+
+Release 051212
+* [nt]roff: The ".pso" request has been added; it reads the output of
+ a command as input to troff.
+* [nt]roff: The ".tmc" request has been added; it works like ".tm" but
+ does not terminate the message with a newline.
+* [nt]roff: The ".open", ".opena", ".write", ".writec", and ".close"
+ requests have been added. They work like ".tm" but write to a named
+ file.
+* [nt]roff: The ".warn" request has been added; it enables additional
+ warning messages. The "\n[.warn]" register prints bits representing
+ the warning categories that are currently enabled.
+* [nt]roff: The ".spreadlimit" request has been added; it can be used
+ to print a warning when the adjustment computed for an output line
+ exceeds a certain value.
+* [nt]roff: The ".mediasize" request has been added; it causes dpost to
+ specify the page size using the PostScript "setpagedevice" operator.
+ This is mainly useful for creating PDF documents.
+* [nt]roff: The "\n[hours]", "\n[minutes]", "\n[seconds]", and "\n[year]"
+ registers have been added to print more parts of the current time.
+* [nr]roff: Availability of extensions is now controlled using an "-xN"
+ option, where "N" is the extension level. The previous "-x" and "-X"
+ options are still accepted.
+* [nt]roff: A "-msafe" macro package has been added; it disables those
+ requests that allow to execute commands or to write to files. It is
+ mainly useful for viewing manual pages.
+* pic: An "-S" option has been added to disable the "sh" element.
+* grap: An "-S" option has been added to disable the "sh" command.
+* nroff: Recognize the "\s'n'" escape sequence and discard it for
+ compatibility with troff.
+* dpost: When writing Type 42 fonts, write the sfnts array in a different
+ order to avoid an error with Acrobat Distiller.
+
+Release 051202
+* [nt]roff: When text is written to a diversion in nofill mode, spacing
+ characters are preserved. This allows the text in the diversion to be
+ adjusted later when it is actually printed. The "-X" option disables
+ the new behavior.
+* [nt]roff: The static limit on the number of if-else constructs has
+ been removed.
+* [nt]roff: The static limit on the number of nested diversions has been
+ removed.
+* [nt]roff: A maximum of 2000 characters (bytes) is now allowed as the
+ total of all arguments to a macro.
+* dpost: The inclusion of PostScript pictures has been fixed; it could
+ generate invalid PostScript programs since release 051025 under certain
+ circumstances.
+* dpost: A "x X PSSetup" device request to support a "\X'PSSetup: ...'"
+ escape sequence has been added. It can be used to include arbitrary
+ PostScript code in the setup section of the output file.
+* dpost/troff -mcolor: CMYK colors and arbitrary PostScript color spaces
+ can now be used. The "setcolor" procedure in "color.ps" has been renamed
+ to "_setcolor" in order to make this possible.
+* [nt]roff: A ".psbb" command is now available to retrieve the bounding box
+ of a PostScript document (particularly of an EPS image).
+* dpost: DSC comments of included EPS images are now preserved.
+* dpost: PostScript pictures that contain binary data can be included now.
+* pic: Troff commands that begin with a "'" are now passed through.
+* grap: Negative zeros in coordinate tick labels are now avoided.
+* -man macros: Fixed the output of a very long line following ".TP".
+* -mdoc macros: Changed the names of Courier fonts to \f(CW \f(CI to
+ match those of troff.
+* RPM package builds now require the new "Heirloom Development Tools"
+ package from <http://heirloom.sourceforge.net/devtools.html> to be
+ installed.
+
+Release 051107
+* The "checknr" utility has been added from OpenSolaris source code.
+* The "ptx" utility has been added from Unix 7th Edition source code.
+* When a locale-dependent or font-specific character was used directly
+ after a macro that ended with a font switch, it was chosen from the
+ old font. This has been fixed.
+* The ".hidechar" request now works correctly if the selected font is
+ not the current font.
+* eqn: More narrow spaces are inserted at some roman/italic font changes
+ now to better match the appearance of the current fonts.
+* grap: The file "grap.defines" has been moved to $(LIBDIR).
+
+Release 051031
+* The "-mpm" macros and the "pm" program have been added from Plan 9 source
+ code. They form a "-ms"-like package for vertical justification; the file
+ "mpm/README" explains some details.
+* eqn: The generated troff program is now resolution-independent; the "-r"
+ option is no longer needed and is ignored.
+* dpost: The elements of overbars, brackets, and braces align better now, in
+ particular in respect to documents distilled by Ghostscript.
+* In the "man" macro package, ".B" and similar font change macros now accept
+ more than six arguments.
+* tbl: The maximum length for "w(...)" width specifications has been raised
+ from 10 to 100.
+* The "make install" procedures of refer and vgrind have been fixed to work
+ with RPM and similar package builds.
+
+Release 051025
+* The "pic" and "grap" utilities have been added from Plan 9 sources.
+* The "vgrind" utility has been added from OpenSolaris sources.
+* "refer" and related utilites have been added from OpenSolaris sources.
+* [nt]roff: The new ".recursionlimit" request allows to change the maximum
+ permitted recursion depth for macro invocations from the default 512.
+
+Release 051015
+* troff, dpost, otfdump: Handle TrueType files with version 3.0 "post" table
+ and no Microsoft/Unicode "cmap" subtable.
+* otfdump: Kerning information was omitted for all but the first font when
+ multiple font file arguments were given. This has been fixed.
+* troff: Fonts that contain possible ligatures (fi, fl, etc.) in their file
+ names are now mounted correctly.
+* dpost: Allow only the glyph at position 0 to be named ".notdef" when
+ generating Type 42 font data.
+* dpost: No longer leaves a stale temporary file in /var/tmp.
+* tbl: Inspects the first 4000 rows of a table now (instead of the first 200)
+ in order to determine column widths and "T{" blocks.
+* tbl: Can handle more than 62 "T{" blocks per table now.
+
+Release 051011
+* troff/dpost: Support for OpenType fonts has been added. This includes
+ support for CFF-based (PostScript) OpenType fonts as well as support for
+ most TrueType fonts.
+* otfdump: New utility that prints the contents of an OpenType font file in
+ an ASCII format just as troff interprets it.
+* troff: A ".ftr" request has been introduced as a font-specific variant of
+ the ".tr" request.
+* troff: A ".feature" request has been introduced to access special features
+ of OpenType fonts.
+* troff: Kerning is now applied to pairs of characters that originate from
+ the same font mounted at two different positions.
+* dpost: Can now access all characters in a large PostScript font, not only
+ the first 255.
+* dpost: If the data in a PFB file to be included does not end with a
+ newline character, add one to the generated PostScript to achieve a
+ consistent DSC structure (Bugreport by Sebastian Leusch).
+* dpost: The limit of characters with "x X" commands has been raised from
+ 50 to 4096. This in particular allows to supply fonts with long path
+ names.
+* The "-mcolor" macros have been added from Plan 9 sources.
+
+Release 050920
+* troff: The handling of locale-dependent characters in copy mode has been
+ fixed. Previously when such a character was given e.g. in an argument to
+ a macro, it was chosen from the font in effect at the time when the macro
+ call was read, instead of the one in effect at the time when the macro
+ was executed.
+* troff: The lookup of kerning pairs from the predefined tables has been
+ fixed. It previously located inappropriate pairs in some cases.
+* troff: Is now more resistent against invalid AFM files whose character
+ count following the "StartCharMetrics" keyword is too large. Previously,
+ no characters outside the default troff character set were accessible
+ with such files.
+* dpost: When an AFM-based font was mounted more than once in troff,
+ localized input characters are now printed properly in all positions.
+ Previously, localized characters were only printed properly on the
+ position that was used first in the document.
+* troff: Several requests for handling fonts did not recognize font names
+ with more than two characters correctly with the "-x" option; they have
+ been fixed.
+* troff: The characters "\(aa", "\(ga", """, "\-", "<", ">", "@", "\", "^",
+ and "~" are now always chosen from the Times Roman special font with
+ AFM-based devices too, as it has been the case with other devices. To get
+ the character from another PostScript font, use the PostScript character
+ name, e.g. "\[less]". In contrast, "\(12", "\(14", and "\(34" are now
+ chosen from the current font, as it has been the case with historic C/A/T
+ output, but not with -Tpost.
+* [nt]roff: The "-mm" macros no longer print "Sun Microsystems" in calls to
+ ".AU" macros and the like.
+* troff: The "\S" escape sequence has been fixed; its use could lead to core
+ dumps with the previous release.
+* troff: The procedure to determine whether to set the "2" value of the
+ "\n(ct" register with AFM fonts should now work properly. This fixes the
+ position of accents above lower-case characters with eqn.
+* dpost: The maximum number of fonts that can appear in a single PostScript
+ output file has been raised to 1536.
+* eqn: All Greek upper-case letters, i.e. "ALPHA", "BETA", etc. are now
+ recognized.
+* [nt]roff: The escape sequence \U'n' sets the character at Unicode position
+ "U+n", where "n" is a hexadecimal number.
+
+Release 050915
+* troff: Can now directly handle .afm/.pfb/.pfa files (i.e. PostScript
+ Type 1 fonts) to select fonts. The ".fp" request has been extended
+ for this, and the "TROFFONTS" environment variable specifies path
+ names to search for font files. See the file "FONTS" for details.
+* troff: Can now handle Type 42 fonts (i.e. TrueType fonts that have been
+ converted for use by PostScript interpreters).
+* troff: Handles input characters according to LC_CTYPE now in combination
+ with the new font setup. In a UTF-8 locale, most characters that are
+ present in standard, Expert, and Symbol PostScript fonts are supported;
+ otherwise, a locale-specific subset of them is available.
+* troff: A PostScript device with a resolution of 72000 dpi, named "ps",
+ is available, and is used by default.
+* troff: Support for pairwise kerning has been added. The default tables
+ are read from the AFM files. In addition, a ".kernpair" request has been
+ introduced to add or replace kerning pairs; it can construct kerning
+ pairs for characters from different fonts. The ".kernafter" and
+ ".kernbefore" requests add a constant amount of space to specific
+ characters.
+* dpost: The PostScript output is now expected to conform to Adobe's
+ Document Structuring Conventions, version 3.0.
+* dpost: PDF Bookmarks, titles and authorship information can be included
+ into the generated PostScript for further processing by the distiller
+ utility. See the file "PDFS" for details.
+* [nt]roff: Hyphenation for languages other than English has been added
+ using the "libhnj" variant from the OpenOffice project. The ".hylang"
+ request has been introduced to select between languages. Hyphenation
+ files have been derived from TeX sources.
+* troff: The paper size can be selected with the ".papersize" request.
+ This is important for correct placement of pages on PostScript printers.
+* troff: Any point size can now be used with PostScript devices, including
+ fractional sizes.
+* troff: The ".fzoom" request allows to zoom the characters of a font.
+* troff: Hanging characters are supported.
+* [nt]roff: The ".lc_ctype" request can be used to set the LC_CTYPE
+ localization setting from within a document.
+* troff: It is now possible to use "\[name]", where name is a character
+ defined in the .afm file for the current font.
+* troff: The ".track" request for tracking letter space has been added.
+* troff: The ".fallback" request for selecting the order in which fonts
+ are searched for missing characters in the current font has been added.
+* troff: The ".hidechar" request hides characters from a font which are
+ then searched using the fallback sequence.
+* troff: Ligatures from expert fonts can be used transparently with the
+ ".flig" request.
+* [nt]roff: Environments selected with the ".ev" command can be given
+ names, and their number is no longer statically limited.
+* [nt]roff: The ".evc" request copies another environment to the current
+ one.
+* [nt]roff: The ".chop" request deletes the last character from a macro,
+ string, or diversion.
+* [nt]roff: The ".return" request returns immediately from a macro.
+* [nt]roff: The "\:" escape inserts an optional line break but generates
+ no hyphen if the line is split.
+* [nt]roff: The "\~" escape is similar to "\ " but inserts a space that
+ stretches like a regular " " when the line is adjusted.
+* [nt]roff: The "\E" escape is similar to "\e" but is not interpreted in
+ copy mode.
+* [nt]roff: The ".shift" request shifts the arguments to a macro.
+* [nt]roff: The "\$(.." and "\$[...]" escapes can be used to refer to
+ macro arguments.
+* troff/dpost: The "\X'Sync'" escape forces dpost to write position and
+ font information to the generated PostScript. This is sometimes useful
+ to ensure that following "\X'PS: ...'" escapes work as expected.
+* troff: The "-a" option now generates locale-dependent output, with best
+ results in UTF-8 locales.
+* The "-mpictures" macros have been added from Plan 9 sources.
+* The "picpack" preprocessor has been added.
+* eqn: The default resolution has been changed to 72000 dpi to match that
+ of troff. The "-r" option was introduced to change it.
+* eqn: Handles "\[]" and "\*[]" now.
+* troff, dpost: Device and font descriptions are now read directly from
+ text files; the "makedev" utility is no longer needed.
+* [nt]roff: The ".xflag" request controls the availability of extensions
+ like the "-x" and "-X" command line options.
+* The file "NEWS" describes new troff language features.
+* tbl: The specification "decimalpoint(x)" can now be used to make the
+ character "x" the decimal point for numeric columns.
+* tbl: There can now be up to 100 columns in a table.
+* [nt]roff: There is no static limit on the number of "-m" options anymore.
+* [nt]roff: There is no static limit on the ".hw" table anymore.
+* [nt]roff: There is no static limit on the pushback buffer anymore; this
+ makes it possible to use longer arguments to macros.
+* [nt]roff: The output of long names with ".pm" and stack dumps has been
+ fixed.
+* [nt]roff: Nested long-name string references \*[\*...] now work.
+* [nt]roff: Tabulators as in ".XY\t" are now correctly handled with -x.
+* The "-man" macro no longer produces cut marks when used with troff.
+* tbl: Two bugs that had been introduced with support for lines of unlimited
+ length have been fixed. They resulted in printing a stray character when
+ more than one input file was used, and in improper handling of input lines
+ continued with a backslash.
+* A new malloc() replacement has been added for performance reasons.
+* A bug in the previously supplied realloc() replacement could result in
+ heap corruption.
+
+Release 050816
+* nroff: A special terminal name, -Tlocale, has been introduced. With this
+ option, UTF-8 output is generated if permitted by the current LC_CTYPE
+ locale, and regular -Tlp output otherwise.
+* [nt]roff: A new option, "-x", enables the recognition of extended
+ features that may affect compatibility with previous versions. The "-X"
+ option disables these features; this is currently the default. Note
+ that the features enabled with -x are under development and subject
+ to change.
+* [nt]roff: With the -x option, it is now possible to use ".de", ".ds",
+ ".nr", and similar requests with more than two-character name arguments,
+ as in ".de longname", and to access such macros later with ".longname",
+ strings with "\*[longname]", and number registers with "\n[longname]".
+* [nt]roff: The "\$@" and "\$*" escape sequences to print all arguments
+ to a macro are now understood with the -x option.
+* troff: The ".ss" command now accepts a second numeric argument with the
+ -x option. If it is zero, no second space character is printed between
+ sentences. Otherwise, a second space character with the same width as
+ the first one is printed.
+* [nt]roff: The static block list limit NBLIST has been removed, memory
+ is now dynamically allocated as needed.
+* [nt]roff: There is no static limit on the number of macros/strings and
+ the number of number registers anymore.
+* -man: A defect in the supplied -man macro package caused headers and
+ footers to be garbled when they were printed between parts of a tbl table
+ that was split across pages.
+
+Release 050813
+* Initial release.
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 000000000000..e290446ffa05
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,345 @@
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)Version 1.1
+
+1. Definitions.
+
+ 1.1. "Contributor" means each individual or entity that creates or
+ contributes to the creation of Modifications.
+
+ 1.2. "Contributor Version" means the combination of the Original Software,
+ prior Modifications used by a Contributor (if any), and the
+ Modifications made by that particular Contributor.
+
+ 1.3. "Covered Software" means (a) the Original Software, or (b)
+ Modifications, or (c) the combination of files containing Original
+ Software with files containing Modifications, in each case including
+ portions thereof.
+
+ 1.4. "Executable" means the Covered Software in any form other than Source
+ Code.
+
+ 1.5. "Initial Developer" means the individual or entity that first makes
+ Original Software available under this License.
+
+ 1.6. "Larger Work" means a work which combines Covered Software or portions
+ thereof with code not governed by the terms of this License.
+
+ 1.7. "License" means this document.
+
+ 1.8. "Licensable" means having the right to grant, to the maximum extent
+ possible, whether at the time of the initial grant or subsequently
+ acquired, any and all of the rights conveyed herein.
+
+ 1.9. "Modifications" means the Source Code and Executable form of any of
+ the following:
+
+ A. Any file that results from an addition to, deletion from or modification
+ of the contents of a file containing Original Software or previous
+ Modifications;
+
+ B. Any new file that contains any part of the Original Software or previous
+ Modification; or
+
+ C. Any new file that is contributed or otherwise made available under the
+ terms of this License.
+
+ 1.10. "Original Software" means the Source Code and Executable form of
+ computer software code that is originally released under this
+ License.
+
+ 1.11. "Patent Claims" means any patent claim(s), now owned or hereafter
+ acquired, including without limitation, method, process, and
+ apparatus claims, in any patent Licensable by grantor.
+
+ 1.12. "Source Code" means (a) the common form of computer software code in
+ which modifications are made and (b) associated documentation
+ included in or with such code.
+
+ 1.13. "You" (or "Your") means an individual or a legal entity exercising
+ rights under, and complying with all of the terms of, this License.
+ For legal entities, "You" includes any entity which controls, is
+ controlled by, or is under common control with You. For purposes of
+ this definition, "control" means (a) the power, direct or indirect,
+ to cause the direction or management of such entity, whether by
+ contract or otherwise, or (b) ownership of more than fifty percent
+ (50%) of the outstanding shares or beneficial ownership of such
+ entity.
+
+2. License Grants.
+
+ 2.1. The Initial Developer Grant.
+
+ Conditioned upon Your compliance with Section 3.1 below and subject to
+ third party intellectual property claims, the Initial Developer hereby
+ grants You a world-wide, royalty-free, non-exclusive license:
+
+ (a) under intellectual property rights (other than patent or trademark)
+ Licensable by Initial Developer, to use, reproduce, modify, display,
+ perform, sublicense and distribute the Original Software (or portions
+ thereof), with or without Modifications, and/or as part of a Larger
+ Work; and
+
+ (b) under Patent Claims infringed by the making, using or selling of
+ Original Software, to make, have made, use, practice, sell, and offer
+ for sale, and/or otherwise dispose of the Original Software (or
+ portions thereof).
+
+ (c) The licenses granted in Sections 2.1(a) and (b) are effective on the
+ date Initial Developer first distributes or otherwise makes the
+ Original Software available to a third party under the terms of this
+ License.
+
+ (d) Notwithstanding Section 2.1(b) above, no patent license is granted:
+ (1) for code that You delete from the Original Software, or (2) for
+ infringements caused by: (i) the modification of the Original
+ Software, or (ii) the combination of the Original Software with other
+ software or devices.
+
+ 2.2. Contributor Grant.
+
+ Conditioned upon Your compliance with Section 3.1 below and subject to
+ third party intellectual property claims, each Contributor hereby grants
+ You a world-wide, royalty-free, non-exclusive license:
+
+ (a) under intellectual property rights (other than patent or trademark)
+ Licensable by Contributor to use, reproduce, modify, display, perform,
+ sublicense and distribute the Modifications created by such Contributor
+ (or portions thereof), either on an unmodified basis, with other
+ Modifications, as Covered Software and/or as part of a Larger Work; and
+
+ (b) under Patent Claims infringed by the making, using, or selling of
+ Modifications made by that Contributor either alone and/or in
+ combination with its Contributor Version (or portions of such
+ combination), to make, use, sell, offer for sale, have made, and/or
+ otherwise dispose of: (1) Modifications made by that Contributor (or
+ portions thereof); and (2) the combination of Modifications made by
+ that Contributor with its Contributor Version (or portions of such
+ combination).
+
+ (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on
+ the date Contributor first distributes or otherwise makes the
+ Modifications available to a third party.
+
+ (d) Notwithstanding Section 2.2(b) above, no patent license is granted:
+ (1) for any code that Contributor has deleted from the Contributor
+ Version; (2) for infringements caused by: (i) third party modifications
+ of Contributor Version, or (ii) the combination of Modifications made
+ by that Contributor with other software (except as part of the
+ Contributor Version) or other devices; or (3) under Patent Claims
+ infringed by Covered Software in the absence of Modifications made by
+ that Contributor.
+
+3. Distribution Obligations.
+
+ 3.1. Availability of Source Code.
+
+ Any Covered Software that You distribute or otherwise make available in
+ Executable form must also be made available in Source Code form and that
+ Source Code form must be distributed only under the terms of this License.
+ You must include a copy of this License with every copy of the Source Code
+ form of the Covered Software You distribute or otherwise make available.
+ You must inform recipients of any such Covered Software in Executable form
+ as to how they can obtain such Covered Software in Source Code form in a
+ reasonable manner on or through a medium customarily used for software
+ exchange.
+
+ 3.2. Modifications.
+
+ The Modifications that You create or to which You contribute are governed
+ by the terms of this License. You represent that You believe Your
+ Modifications are Your original creation(s) and/or You have sufficient
+ rights to grant the rights conveyed by this License.
+
+ 3.3. Required Notices.
+
+ You must include a notice in each of Your Modifications that identifies You
+ as the Contributor of the Modification. You may not remove or alter any
+ copyright, patent or trademark notices contained within the Covered
+ Software, or any notices of licensing or any descriptive text giving
+ attribution to any Contributor or the Initial Developer.
+
+ 3.4. Application of Additional Terms.
+
+ You may not offer or impose any terms on any Covered Software in Source
+ Code form that alters or restricts the applicable version of this License
+ or the recipients' rights hereunder. You may choose to offer, and to charge
+ a fee for, warranty, support, indemnity or liability obligations to one or
+ more recipients of Covered Software. However, you may do so only on Your
+ own behalf, and not on behalf of the Initial Developer or any Contributor.
+ You must make it absolutely clear that any such warranty, support,
+ indemnity or liability obligation is offered by You alone, and You hereby
+ agree to indemnify the Initial Developer and every Contributor for any
+ liability incurred by the Initial Developer or such Contributor as a
+ result of warranty, support, indemnity or liability terms You offer.
+
+ 3.5. Distribution of Executable Versions.
+
+ You may distribute the Executable form of the Covered Software under the
+ terms of this License or under the terms of a license of Your choice, which
+ may contain terms different from this License, provided that You are in
+ compliance with the terms of this License and that the license for the
+ Executable form does not attempt to limit or alter the recipient's rights
+ in the Source Code form from the rights set forth in this License. If You
+ distribute the Covered Software in Executable form under a different
+ license, You must make it absolutely clear that any terms which differ from
+ this License are offered by You alone, not by the Initial Developer or
+ Contributor. You hereby agree to indemnify the Initial Developer and every
+ Contributor for any liability incurred by the Initial Developer or such
+ Contributor as a result of any such terms You offer.
+
+ 3.6. Larger Works.
+
+ You may create a Larger Work by combining Covered Software with other code
+ not governed by the terms of this License and distribute the Larger Work as
+ a single product. In such a case, You must make sure the requirements of
+ this License are fulfilled for the Covered Software.
+
+4. Versions of the License.
+
+ 4.1. New Versions.
+
+ Oracle is the initial license steward and may publish revised and/or new
+ versions of this License from time to time. Each version will be given a
+ distinguishing version number. Except as provided in Section 4.3, no one
+ other than the license steward has the right to modify this License.
+
+ 4.2. Effect of New Versions.
+
+ You may always continue to use, distribute or otherwise make the Covered
+ Software available under the terms of the version of the License under
+ which You originally received the Covered Software. If the Initial
+ Developer includes a notice in the Original Software prohibiting it from
+ being distributed or otherwise made available under any subsequent version
+ of the License, You must distribute and make the Covered Software available
+ under the terms of the version of the License under which You originally
+ received the Covered Software. Otherwise, You may also choose to use,
+ distribute or otherwise make the Covered Software available under the terms
+ of any subsequent version of the License published by the license steward.
+
+ 4.3. Modified Versions.
+
+ When You are an Initial Developer and You want to create a new license for
+ Your Original Software, You may create and use a modified version of this
+ License if You: (a) rename the license and remove any references to the
+ name of the license steward (except to note that the license differs from
+ this License); and (b) otherwise make it clear that the license contains
+ terms which differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+ COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF
+ DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE
+ ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS
+ WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU
+ (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY
+ NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY
+ CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED
+ SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+6. TERMINATION.
+
+ 6.1. This License and the rights granted hereunder will terminate
+ automatically if You fail to comply with terms herein and fail to cure
+ such breach within 30 days of becoming aware of the breach. Provisions
+ which, by their nature, must remain in effect beyond the termination
+ of this License shall survive.
+
+ 6.2. If You assert a patent infringement claim (excluding declaratory
+ judgment actions) against Initial Developer or a Contributor (the
+ Initial Developer or Contributor against whom You assert such claim is
+ referred to as "Participant") alleging that the Participant Software
+ (meaning the Contributor Version where the Participant is a
+ Contributor or the Original Software where the Participant is the
+ Initial Developer) directly or indirectly infringes any patent, then
+ any and all rights granted directly or indirectly to You by such
+ Participant, the Initial Developer (if the Initial Developer is not
+ the Participant) and all Contributors under Sections 2.1 and/or 2.2 of
+ this License shall, upon 60 days notice from Participant terminate
+ prospectively and automatically at the expiration of such 60 day
+ notice period, unless if within such 60 day period You withdraw Your
+ claim with respect to the Participant Software against such
+ Participant either unilaterally or pursuant to a written agreement
+ with Participant.
+
+ 6.3. If You assert a patent infringement claim against Participant alleging
+ that the Participant Software directly or indirectly infringes any
+ patent where such claim is resolved (such as by license or settlement)
+ prior to the initiation of patent infringement litigation, then the
+ reasonable value of the licenses granted by such Participant under
+ Sections 2.1 or 2.2 shall be taken into account in determining the
+ amount or value of any payment or license.
+
+ 6.4. In the event of termination under Sections 6.1 or 6.2 above, all end
+ user licenses that have been validly granted by You or any distributor
+ hereunder prior to termination (excluding licenses granted to You by
+ any distributor) shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+ UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING
+ NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY
+ OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER
+ OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL,
+ INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
+ LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE
+ OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF
+ SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES.
+ THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR
+ PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
+ APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW
+ THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS
+ EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+ The Covered Software is a "commercial item," as that term is defined in 48
+ C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" (as
+ that term is defined at 48 C.F.R. 252.227-7014(a)(1)) and "commercial
+ computer software documentation" as such terms are used in 48 C.F.R. 12.212
+ (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
+ through 227.7202-4 (June 1995), all U.S. Government End Users acquire
+ Covered Software with only those rights set forth herein. This U.S.
+ Government Rights clause is in lieu of, and supersedes, any other FAR,
+ DFAR, or other clause or provision that addresses Government rights in
+ computer software under this License.
+
+9. MISCELLANEOUS.
+
+ This License represents the complete agreement concerning subject matter
+ hereof. If any provision of this License is held to be unenforceable, such
+ provision shall be reformed only to the extent necessary to make it
+ enforceable. This License shall be governed by the law of the jurisdiction
+ specified in a notice contained within the Original Software (except to the
+ extent applicable law, if any, provides otherwise), excluding such
+ jurisdiction's conflict-of-law provisions. Any litigation relating to this
+ License shall be subject to the jurisdiction of the courts located in the
+ jurisdiction and venue specified in a notice contained within the Original
+ Software, with the losing party responsible for costs, including, without
+ limitation, court costs and reasonable attorneys' fees and expenses. The
+ application of the United Nations Convention on Contracts for the
+ International Sale of Goods is expressly excluded. Any law or regulation
+ which provides that the language of a contract shall be construed against
+ the drafter shall not apply to this License. You agree that You alone are
+ responsible for compliance with the United States export administration
+ regulations (and the export control laws and regulation of any other
+ countries) when You use, distribute or otherwise make available any Covered
+ Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+ As between Initial Developer and the Contributors, each party is
+ responsible for claims and damages arising, directly or indirectly, out of
+ its utilization of rights under this License and You agree to work with
+ Initial Developer and Contributors to distribute such responsibility on an
+ equitable basis. Nothing herein is intended or shall be deemed to
+ constitute any admission of liability.
+
+NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE
+(CDDL)
+
+The code released under the CDDL shall be governed by the laws of the State of
+California (excluding conflict-of-law provisions). Any litigation relating to
+this License shall be subject to the jurisdiction of the Federal Courts of the
+Northern District of California and the state courts of the State of
+California, with venue lying in Santa Clara County, California.
diff --git a/LICENSE.d/BERKELEY.LICENSE b/LICENSE.d/BERKELEY.LICENSE
new file mode 100644
index 000000000000..f538faf82561
--- /dev/null
+++ b/LICENSE.d/BERKELEY.LICENSE
@@ -0,0 +1,30 @@
+Copyright (c) 1980, 1993
+ The Regents of the University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+3. All advertising materials mentioning features or use of this software
+ must display the following acknowedgement:
+ This product includes software developed by the University of
+ California, Berkeley and its contributors.
+4. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
diff --git a/LICENSE.d/CALDERA.LICENSE b/LICENSE.d/CALDERA.LICENSE
new file mode 100644
index 000000000000..aa0ed95f222f
--- /dev/null
+++ b/LICENSE.d/CALDERA.LICENSE
@@ -0,0 +1,31 @@
+Copyright(C) Caldera International Inc. 2001-2002. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+ Redistributions of source code and documentation must retain the
+ above copyright notice, this list of conditions and the following
+ disclaimer.
+ Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ All advertising materials mentioning features or use of this software
+ must display the following acknowledgement:
+ This product includes software developed or owned by Caldera
+ International, Inc.
+ Neither the name of Caldera International, Inc. nor the names of
+ other contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+INTERNATIONAL, INC. AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL CALDERA INTERNATIONAL, INC. BE
+LIABLE FOR ANY DIRECT, INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/LICENSE.d/COPYING.LGPL b/LICENSE.d/COPYING.LGPL
new file mode 100644
index 000000000000..b1e3f5a26387
--- /dev/null
+++ b/LICENSE.d/COPYING.LGPL
@@ -0,0 +1,504 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "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
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library 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. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/LICENSE.d/LPPL-1-0.LICENSE b/LICENSE.d/LPPL-1-0.LICENSE
new file mode 100644
index 000000000000..9425aab83cd5
--- /dev/null
+++ b/LICENSE.d/LPPL-1-0.LICENSE
@@ -0,0 +1,211 @@
+LaTeX Project Public License
+============================
+
+LPPL Version 1.0 1999-03-01
+
+Copyright 1999 LaTeX3 Project
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but modification is not allowed.
+
+
+Preamble
+========
+
+The LaTeX Project Public License (LPPL) is the license under which the
+base LaTeX distribution is distributed. As described below you may use
+this licence for any software that you wish to distribute.
+
+It may be particularly suitable if your software is TeX related (such
+as a LaTeX package file) but it may be used for any software, even if
+it is unrelated to TeX.
+
+To use this license, the files of your distribution should have an
+explicit copyright notice giving your name and the year, together
+with a reference to this license.
+
+A typical example would be
+
+ %% pig.sty
+ %% Copyright 2001 M. Y. Name
+
+ % This program can 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 (at your option) any later version.
+
+Given such a notice in the file, the conditions of this document would
+apply, with:
+
+`The Program' referring to the software `pig.sty' and
+`The Copyright Holder' referring to the person `M. Y. Name'.
+
+To see a real example, see the file legal.txt which carries the
+copyright notice for the base latex distribution.
+
+This license gives terms under which files of The Program may be
+distributed and modified. Individual files may have specific further
+constraints on modification, but no file should have restrictions on
+distribution other than those specified below.
+This is to ensure that a distributor wishing to distribute a complete
+unmodified copy of The Program need only check the conditions in this
+file, and does not need to check every file in The Program for extra
+restrictions. If you do need to modify the distribution terms of some
+files, do not refer to this license, instead distribute The Program
+under a different license. You may use the parts of the text of LPPL as
+a model for your own license, but your license should not directly refer
+to the LPPL or otherwise give the impression that The Program is
+distributed under the LPPL.
+
+
+
+The LaTeX Project Public License
+================================
+Terms And Conditions For Copying, Distribution And Modification
+===============================================================
+
+
+WARRANTY
+========
+
+There is no warranty for The Program, to the extent permitted by
+applicable law. Except when otherwise stated in writing, The
+Copyright Holder provides The Program `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
+program is with you. Should The Program 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 of the individual authors named in
+the source for The Program, be liable to you for damages, including
+any general, special, incidental or consequential damages arising out
+of any use of The Program or out of inability to use The Program
+(including but not limited to loss of data or data being rendered
+inaccurate or losses sustained by you or by third parties as a result
+of a failure of The Program to operate with any other programs), even
+if such holder or other party has been advised of the possibility of
+such damages.
+
+
+DISTRIBUTION
+============
+
+Redistribution of unchanged files is allowed provided that all files
+that make up the distribution of The Program are distributed.
+In particular this means that The Program has to be distributed
+including its documentation if documentation was part of the original
+distribution.
+
+The distribution of The Program will contain a prominent file
+listing all the files covered by this license.
+
+If you receive only some of these files from someone, complain!
+
+The distribution of changed versions of certain files included in the
+The Program, and the reuse of code from The Program, are allowed
+under the following restrictions:
+
+ * It is allowed only if the legal notice in the file does not
+ expressly forbid it.
+ See note below, under "Conditions on individual files".
+
+ * You rename the file before you make any changes to it, unless the
+ file explicitly says that renaming is not required. Any such changed
+ files must be distributed under a license that forbids distribution
+ of those files, and any files derived from them, under the names used
+ by the original files in the distribution of The Program.
+
+ * You change any `identification string' in The Program to clearly
+ indicate that the file is not part of the standard system.
+
+ * If The Program includes an `error report address' so that errors
+ may be reported to The Copyright Holder, or other specified
+ addresses, this address must be changed in any modified versions of
+ The Program, so that reports for files not maintained by the
+ original program maintainers are directed to the maintainers of the
+ changed files.
+
+ * You acknowledge the source and authorship of the original version
+ in the modified file.
+
+ * You also distribute the unmodified version of the file or
+ alternatively provide sufficient information so that the
+ user of your modified file can be reasonably expected to be
+ able to obtain an original, unmodified copy of The Program.
+ For example, you may specify a URL to a site that you expect
+ will freely provide the user with a copy of The Program (either
+ the version on which your modification is based, or perhaps a
+ later version).
+
+ * If The Program is intended to be used with, or is based on, LaTeX,
+ then files with the following file extensions which have special
+ meaning in LaTeX Software, have special modification rules under the
+ license:
+
+ - Files with extension `.ins' (installation files): these files may
+ not be modified at all because they contain the legal notices
+ that are placed in the generated files.
+
+ - Files with extension `.fd' (LaTeX font definitions files): these
+ files are allowed to be modified without changing the name, but
+ only to enable use of all available fonts and to prevent attempts
+ to access unavailable fonts. However, modified files are not
+ allowed to be distributed in place of original files.
+
+ - Files with extension `.cfg' (configuration files): these files
+ can be created or modified to enable easy configuration of the
+ system. The documentation in cfgguide.tex in the base LaTeX
+ distribution describes when it makes sense to modify or generate
+ such files.
+
+
+The above restrictions are not intended to prohibit, and hence do
+not apply to, the updating, by any method, of a file so that it
+becomes identical to the latest version of that file in The Program.
+
+========================================================================
+
+NOTES
+=====
+
+We believe that these requirements give you the freedom you to make
+modifications that conform with whatever technical specifications you
+wish, whilst maintaining the availability, integrity and reliability of
+The Program. If you do not see how to achieve your goal whilst
+adhering to these requirements then read the document cfgguide.tex
+in the base LaTeX distribution for suggestions.
+
+Because of the portability and exchangeability aspects of systems
+like LaTeX, The LaTeX3 Project deprecates the distribution of
+non-standard versions of components of LaTeX or of generally available
+contributed code for them but such distributions are permitted under the
+above restrictions.
+
+The document modguide.tex in the base LaTeX distribution details
+the reasons for the legal requirements detailed above.
+Even if The Program is unrelated to LaTeX, the argument in
+modguide.tex may still apply, and should be read before
+a modified version of The Program is distributed.
+
+
+Conditions on individual files
+==============================
+
+The individual files may bear additional conditions which supersede
+the general conditions on distribution and modification contained in
+this file. If there are any such files, the distribution of The
+Program will contain a prominent file that lists all the exceptional
+files.
+
+Typical examples of files with more restrictive modification
+conditions would be files that contain the text of copyright notices.
+
+ * The conditions on individual files differ only in the
+ extent of *modification* that is allowed.
+
+ * The conditions on *distribution* are the same for all the files.
+ Thus a (re)distributor of a complete, unchanged copy of The Program
+ need meet only the conditions in this file; it is not necessary to
+ check the header of every file in the distribution to check that a
+ distribution meets these requirements.
diff --git a/LICENSE.d/LUCENT.LICENSE b/LICENSE.d/LUCENT.LICENSE
new file mode 100644
index 000000000000..a5d7d87d79f0
--- /dev/null
+++ b/LICENSE.d/LUCENT.LICENSE
@@ -0,0 +1,258 @@
+The Plan 9 software is provided under the terms of the
+Lucent Public License, Version 1.02, reproduced below,
+with the following exceptions:
+
+1. No right is granted to create derivative works of or
+ to redistribute (other than with the Plan 9 Operating System)
+ the screen imprinter fonts identified in subdirectory
+ /lib/font/bit/lucida and printer fonts (Lucida Sans Unicode, Lucida
+ Sans Italic, Lucida Sans Demibold, Lucida Typewriter, Lucida Sans
+ Typewriter83), identified in subdirectory /sys/lib/postscript/font.
+ These directories contain material copyrights by B&H Inc. and Y&Y Inc.
+
+2. The printer fonts identified in subdirectory /sys/lib/ghostscript/font
+ are subject to the GNU GPL, reproduced in the file /LICENSE.gpl.
+
+3. The ghostscript program in the subdirectory /sys/src/cmd/gs is
+ covered by the Aladdin Free Public License, reproduced in the file
+ /LICENSE.afpl.
+
+===================================================================
+
+Lucent Public License Version 1.02
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS PUBLIC
+LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE
+PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+ a. in the case of Lucent Technologies Inc. ("LUCENT"), the Original
+ Program, and
+ b. in the case of each Contributor,
+
+ i. changes to the Program, and
+ ii. additions to the Program;
+
+ where such changes and/or additions to the Program were added to the
+ Program by such Contributor itself or anyone acting on such
+ Contributor's behalf, and the Contributor explicitly consents, in
+ accordance with Section 3C, to characterization of the changes and/or
+ additions as Contributions.
+
+"Contributor" means LUCENT and any other entity that has Contributed a
+Contribution to the Program.
+
+"Distributor" means a Recipient that distributes the Program,
+modifications to the Program, or any part thereof.
+
+"Licensed Patents" mean patent claims licensable by a Contributor
+which are necessarily infringed by the use or sale of its Contribution
+alone or when combined with the Program.
+
+"Original Program" means the original version of the software
+accompanying this Agreement as released by LUCENT, including source
+code, object code and documentation, if any.
+
+"Program" means the Original Program and Contributions or any part
+thereof
+
+"Recipient" means anyone who receives the Program under this
+Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+ a. Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free copyright
+ license to reproduce, prepare derivative works of, publicly display,
+ publicly perform, distribute and sublicense the Contribution of such
+ Contributor, if any, and such derivative works, in source code and
+ object code form.
+
+ b. Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free patent
+ license under Licensed Patents to make, use, sell, offer to sell,
+ import and otherwise transfer the Contribution of such Contributor, if
+ any, in source code and object code form. The patent license granted
+ by a Contributor shall also apply to the combination of the
+ Contribution of that Contributor and the Program if, at the time the
+ Contribution is added by the Contributor, such addition of the
+ Contribution causes such combination to be covered by the Licensed
+ Patents. The patent license granted by a Contributor shall not apply
+ to (i) any other combinations which include the Contribution, nor to
+ (ii) Contributions of other Contributors. No hardware per se is
+ licensed hereunder.
+
+ c. Recipient understands that although each Contributor grants the
+ licenses to its Contributions set forth herein, no assurances are
+ provided by any Contributor that the Program does not infringe the
+ patent or other intellectual property rights of any other entity. Each
+ Contributor disclaims any liability to Recipient for claims brought by
+ any other entity based on infringement of intellectual property rights
+ or otherwise. As a condition to exercising the rights and licenses
+ granted hereunder, each Recipient hereby assumes sole responsibility
+ to secure any other intellectual property rights needed, if any. For
+ example, if a third party patent license is required to allow
+ Recipient to distribute the Program, it is Recipient's responsibility
+ to acquire that license before distributing the Program.
+
+ d. Each Contributor represents that to its knowledge it has sufficient
+ copyright rights in its Contribution, if any, to grant the copyright
+ license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A. Distributor may choose to distribute the Program in any form under
+this Agreement or under its own license agreement, provided that:
+
+ a. it complies with the terms and conditions of this Agreement;
+
+ b. if the Program is distributed in source code or other tangible
+ form, a copy of this Agreement or Distributor's own license agreement
+ is included with each copy of the Program; and
+
+ c. if distributed under Distributor's own license agreement, such
+ license agreement:
+
+ i. effectively disclaims on behalf of all Contributors all warranties
+ and conditions, express and implied, including warranties or
+ conditions of title and non-infringement, and implied warranties or
+ conditions of merchantability and fitness for a particular purpose;
+ ii. effectively excludes on behalf of all Contributors all liability
+ for damages, including direct, indirect, special, incidental and
+ consequential damages, such as lost profits; and
+ iii. states that any provisions which differ from this Agreement are
+ offered by that Contributor alone and not by any other party.
+
+B. Each Distributor must include the following in a conspicuous
+ location in the Program:
+
+ Copyright (C) 2003, Lucent Technologies Inc. and others. All Rights
+ Reserved.
+
+C. In addition, each Contributor must identify itself as the
+originator of its Contribution in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+Also, each Contributor must agree that the additions and/or changes
+are intended to be a Contribution. Once a Contribution is contributed,
+it may not thereafter be revoked.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use
+of the Program, the Distributor who includes the Program in a
+commercial product offering should do so in a manner which does not
+create potential liability for Contributors. Therefore, if a
+Distributor includes the Program in a commercial product offering,
+such Distributor ("Commercial Distributor") hereby agrees to defend
+and indemnify every Contributor ("Indemnified Contributor") against
+any losses, damages and costs (collectively"Losses") arising from
+claims, lawsuits and other legal actions brought by a third party
+against the Indemnified Contributor to the extent caused by the acts
+or omissions of such Commercial Distributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement.
+In order to qualify, an Indemnified Contributor must: a) promptly
+notify the Commercial Distributor in writing of such claim, and b)
+allow the Commercial Distributor to control, and cooperate with the
+Commercial Distributor in, the defense and any related settlement
+negotiations. The Indemnified Contributor may participate in any such
+claim at its own expense.
+
+For example, a Distributor might include the Program in a commercial
+product offering, Product X. That Distributor is then a Commercial
+Distributor. If that Commercial Distributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Distributor's responsibility
+alone. Under this section, the Commercial Distributor would have to
+defend claims against the Contributors related to those performance
+claims and warranties, and if a court requires any Contributor to pay
+any damages as a result, the Commercial Distributor must pay those
+damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY
+WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement, including but not limited to
+the risks and costs of program errors, compliance with applicable
+laws, damage to or loss of data, programs or equipment, and
+unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR
+ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. EXPORT CONTROL
+
+Recipient agrees that Recipient alone is responsible for compliance
+with the United States export administration regulations (and the
+export control laws and regulation of any other countries).
+
+8. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further
+action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against a Contributor with
+respect to a patent applicable to software (including a cross-claim or
+counterclaim in a lawsuit), then any patent licenses granted by that
+Contributor to such Recipient under this Agreement shall terminate as
+of the date such litigation is filed. In addition, if Recipient
+institutes patent litigation against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that the Program
+itself (excluding combinations of the Program with other software or
+hardware) infringes such Recipient's patent(s), then such Recipient's
+rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of
+time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use
+and distribution of the Program as soon as reasonably practicable.
+However, Recipient's obligations under this Agreement and any licenses
+granted by Recipient relating to the Program shall continue and
+survive.
+
+LUCENT may publish new versions (including revisions) of this
+Agreement from time to time. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new
+version of the Agreement is published, Contributor may elect to
+distribute the Program (including its Contributions) under the new
+version. No one other than LUCENT has the right to modify this
+Agreement. Except as expressly stated in Sections 2(a) and 2(b) above,
+Recipient receives no rights or licenses to the intellectual property
+of any Contributor under this Agreement, whether expressly, by
+implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No
+party to this Agreement will bring a legal action under this Agreement
+more than one year after the cause of action arose. Each party waives
+its rights to a jury trial in any resulting litigation.
+
diff --git a/LICENSE.d/OPENSOLARIS.LICENSE b/LICENSE.d/OPENSOLARIS.LICENSE
new file mode 100644
index 000000000000..535dec222d73
--- /dev/null
+++ b/LICENSE.d/OPENSOLARIS.LICENSE
@@ -0,0 +1,385 @@
+Unless otherwise noted, all files in this distribution are released
+under the Common Development and Distribution License (CDDL),
+Version 1.0 only. Exceptions are noted within the associated
+source files.
+
+--------------------------------------------------------------------
+
+
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE Version 1.0
+
+1. Definitions.
+
+ 1.1. "Contributor" means each individual or entity that creates
+ or contributes to the creation of Modifications.
+
+ 1.2. "Contributor Version" means the combination of the Original
+ Software, prior Modifications used by a Contributor (if any),
+ and the Modifications made by that particular Contributor.
+
+ 1.3. "Covered Software" means (a) the Original Software, or (b)
+ Modifications, or (c) the combination of files containing
+ Original Software with files containing Modifications, in
+ each case including portions thereof.
+
+ 1.4. "Executable" means the Covered Software in any form other
+ than Source Code.
+
+ 1.5. "Initial Developer" means the individual or entity that first
+ makes Original Software available under this License.
+
+ 1.6. "Larger Work" means a work which combines Covered Software or
+ portions thereof with code not governed by the terms of this
+ License.
+
+ 1.7. "License" means this document.
+
+ 1.8. "Licensable" means having the right to grant, to the maximum
+ extent possible, whether at the time of the initial grant or
+ subsequently acquired, any and all of the rights conveyed
+ herein.
+
+ 1.9. "Modifications" means the Source Code and Executable form of
+ any of the following:
+
+ A. Any file that results from an addition to, deletion from or
+ modification of the contents of a file containing Original
+ Software or previous Modifications;
+
+ B. Any new file that contains any part of the Original
+ Software or previous Modifications; or
+
+ C. Any new file that is contributed or otherwise made
+ available under the terms of this License.
+
+ 1.10. "Original Software" means the Source Code and Executable
+ form of computer software code that is originally released
+ under this License.
+
+ 1.11. "Patent Claims" means any patent claim(s), now owned or
+ hereafter acquired, including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by
+ grantor.
+
+ 1.12. "Source Code" means (a) the common form of computer software
+ code in which modifications are made and (b) associated
+ documentation included in or with such code.
+
+ 1.13. "You" (or "Your") means an individual or a legal entity
+ exercising rights under, and complying with all of the terms
+ of, this License. For legal entities, "You" includes any
+ entity which controls, is controlled by, or is under common
+ control with You. For purposes of this definition,
+ "control" means (a) the power, direct or indirect, to cause
+ the direction or management of such entity, whether by
+ contract or otherwise, or (b) ownership of more than fifty
+ percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+
+2. License Grants.
+
+ 2.1. The Initial Developer Grant.
+
+ Conditioned upon Your compliance with Section 3.1 below and
+ subject to third party intellectual property claims, the Initial
+ Developer hereby grants You a world-wide, royalty-free,
+ non-exclusive license:
+
+ (a) under intellectual property rights (other than patent or
+ trademark) Licensable by Initial Developer, to use,
+ reproduce, modify, display, perform, sublicense and
+ distribute the Original Software (or portions thereof),
+ with or without Modifications, and/or as part of a Larger
+ Work; and
+
+ (b) under Patent Claims infringed by the making, using or
+ selling of Original Software, to make, have made, use,
+ practice, sell, and offer for sale, and/or otherwise
+ dispose of the Original Software (or portions thereof).
+
+ (c) The licenses granted in Sections 2.1(a) and (b) are
+ effective on the date Initial Developer first distributes
+ or otherwise makes the Original Software available to a
+ third party under the terms of this License.
+
+ (d) Notwithstanding Section 2.1(b) above, no patent license is
+ granted: (1) for code that You delete from the Original
+ Software, or (2) for infringements caused by: (i) the
+ modification of the Original Software, or (ii) the
+ combination of the Original Software with other software
+ or devices.
+
+ 2.2. Contributor Grant.
+
+ Conditioned upon Your compliance with Section 3.1 below and
+ subject to third party intellectual property claims, each
+ Contributor hereby grants You a world-wide, royalty-free,
+ non-exclusive license:
+
+ (a) under intellectual property rights (other than patent or
+ trademark) Licensable by Contributor to use, reproduce,
+ modify, display, perform, sublicense and distribute the
+ Modifications created by such Contributor (or portions
+ thereof), either on an unmodified basis, with other
+ Modifications, as Covered Software and/or as part of a
+ Larger Work; and
+
+ (b) under Patent Claims infringed by the making, using, or
+ selling of Modifications made by that Contributor either
+ alone and/or in combination with its Contributor Version
+ (or portions of such combination), to make, use, sell,
+ offer for sale, have made, and/or otherwise dispose of:
+ (1) Modifications made by that Contributor (or portions
+ thereof); and (2) the combination of Modifications made by
+ that Contributor with its Contributor Version (or portions
+ of such combination).
+
+ (c) The licenses granted in Sections 2.2(a) and 2.2(b) are
+ effective on the date Contributor first distributes or
+ otherwise makes the Modifications available to a third
+ party.
+
+ (d) Notwithstanding Section 2.2(b) above, no patent license is
+ granted: (1) for any code that Contributor has deleted
+ from the Contributor Version; (2) for infringements caused
+ by: (i) third party modifications of Contributor Version,
+ or (ii) the combination of Modifications made by that
+ Contributor with other software (except as part of the
+ Contributor Version) or other devices; or (3) under Patent
+ Claims infringed by Covered Software in the absence of
+ Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+ 3.1. Availability of Source Code.
+
+ Any Covered Software that You distribute or otherwise make
+ available in Executable form must also be made available in Source
+ Code form and that Source Code form must be distributed only under
+ the terms of this License. You must include a copy of this
+ License with every copy of the Source Code form of the Covered
+ Software You distribute or otherwise make available. You must
+ inform recipients of any such Covered Software in Executable form
+ as to how they can obtain such Covered Software in Source Code
+ form in a reasonable manner on or through a medium customarily
+ used for software exchange.
+
+ 3.2. Modifications.
+
+ The Modifications that You create or to which You contribute are
+ governed by the terms of this License. You represent that You
+ believe Your Modifications are Your original creation(s) and/or
+ You have sufficient rights to grant the rights conveyed by this
+ License.
+
+ 3.3. Required Notices.
+
+ You must include a notice in each of Your Modifications that
+ identifies You as the Contributor of the Modification. You may
+ not remove or alter any copyright, patent or trademark notices
+ contained within the Covered Software, or any notices of licensing
+ or any descriptive text giving attribution to any Contributor or
+ the Initial Developer.
+
+ 3.4. Application of Additional Terms.
+
+ You may not offer or impose any terms on any Covered Software in
+ Source Code form that alters or restricts the applicable version
+ of this License or the recipients' rights hereunder. You may
+ choose to offer, and to charge a fee for, warranty, support,
+ indemnity or liability obligations to one or more recipients of
+ Covered Software. However, you may do so only on Your own behalf,
+ and not on behalf of the Initial Developer or any Contributor.
+ You must make it absolutely clear that any such warranty, support,
+ indemnity or liability obligation is offered by You alone, and You
+ hereby agree to indemnify the Initial Developer and every
+ Contributor for any liability incurred by the Initial Developer or
+ such Contributor as a result of warranty, support, indemnity or
+ liability terms You offer.
+
+ 3.5. Distribution of Executable Versions.
+
+ You may distribute the Executable form of the Covered Software
+ under the terms of this License or under the terms of a license of
+ Your choice, which may contain terms different from this License,
+ provided that You are in compliance with the terms of this License
+ and that the license for the Executable form does not attempt to
+ limit or alter the recipient's rights in the Source Code form from
+ the rights set forth in this License. If You distribute the
+ Covered Software in Executable form under a different license, You
+ must make it absolutely clear that any terms which differ from
+ this License are offered by You alone, not by the Initial
+ Developer or Contributor. You hereby agree to indemnify the
+ Initial Developer and every Contributor for any liability incurred
+ by the Initial Developer or such Contributor as a result of any
+ such terms You offer.
+
+ 3.6. Larger Works.
+
+ You may create a Larger Work by combining Covered Software with
+ other code not governed by the terms of this License and
+ distribute the Larger Work as a single product. In such a case,
+ You must make sure the requirements of this License are fulfilled
+ for the Covered Software.
+
+4. Versions of the License.
+
+ 4.1. New Versions.
+
+ Sun Microsystems, Inc. is the initial license steward and may
+ publish revised and/or new versions of this License from time to
+ time. Each version will be given a distinguishing version number.
+ Except as provided in Section 4.3, no one other than the license
+ steward has the right to modify this License.
+
+ 4.2. Effect of New Versions.
+
+ You may always continue to use, distribute or otherwise make the
+ Covered Software available under the terms of the version of the
+ License under which You originally received the Covered Software.
+ If the Initial Developer includes a notice in the Original
+ Software prohibiting it from being distributed or otherwise made
+ available under any subsequent version of the License, You must
+ distribute and make the Covered Software available under the terms
+ of the version of the License under which You originally received
+ the Covered Software. Otherwise, You may also choose to use,
+ distribute or otherwise make the Covered Software available under
+ the terms of any subsequent version of the License published by
+ the license steward.
+
+ 4.3. Modified Versions.
+
+ When You are an Initial Developer and You want to create a new
+ license for Your Original Software, You may create and use a
+ modified version of this License if You: (a) rename the license
+ and remove any references to the name of the license steward
+ (except to note that the license differs from this License); and
+ (b) otherwise make it clear that the license contains terms which
+ differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+ COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
+ BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+ INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
+ SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
+ PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
+ PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
+ COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
+ INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY
+ NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
+ WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+ ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
+ DISCLAIMER.
+
+6. TERMINATION.
+
+ 6.1. This License and the rights granted hereunder will terminate
+ automatically if You fail to comply with terms herein and fail to
+ cure such breach within 30 days of becoming aware of the breach.
+ Provisions which, by their nature, must remain in effect beyond
+ the termination of this License shall survive.
+
+ 6.2. If You assert a patent infringement claim (excluding
+ declaratory judgment actions) against Initial Developer or a
+ Contributor (the Initial Developer or Contributor against whom You
+ assert such claim is referred to as "Participant") alleging that
+ the Participant Software (meaning the Contributor Version where
+ the Participant is a Contributor or the Original Software where
+ the Participant is the Initial Developer) directly or indirectly
+ infringes any patent, then any and all rights granted directly or
+ indirectly to You by such Participant, the Initial Developer (if
+ the Initial Developer is not the Participant) and all Contributors
+ under Sections 2.1 and/or 2.2 of this License shall, upon 60 days
+ notice from Participant terminate prospectively and automatically
+ at the expiration of such 60 day notice period, unless if within
+ such 60 day period You withdraw Your claim with respect to the
+ Participant Software against such Participant either unilaterally
+ or pursuant to a written agreement with Participant.
+
+ 6.3. In the event of termination under Sections 6.1 or 6.2 above,
+ all end user licenses that have been validly granted by You or any
+ distributor hereunder prior to termination (excluding licenses
+ granted to You by any distributor) shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+ UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+ (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
+ INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
+ COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
+ LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
+ CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
+ LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
+ STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+ COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+ INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+ LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
+ INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
+ APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
+ NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+ CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
+ APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+ The Covered Software is a "commercial item," as that term is
+ defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
+ computer software" (as that term is defined at 48
+ C.F.R. 252.227-7014(a)(1)) and "commercial computer software
+ documentation" as such terms are used in 48 C.F.R. 12.212
+ (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48
+ C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all
+ U.S. Government End Users acquire Covered Software with only those
+ rights set forth herein. This U.S. Government Rights clause is in
+ lieu of, and supersedes, any other FAR, DFAR, or other clause or
+ provision that addresses Government rights in computer software
+ under this License.
+
+9. MISCELLANEOUS.
+
+ This License represents the complete agreement concerning subject
+ matter hereof. If any provision of this License is held to be
+ unenforceable, such provision shall be reformed only to the extent
+ necessary to make it enforceable. This License shall be governed
+ by the law of the jurisdiction specified in a notice contained
+ within the Original Software (except to the extent applicable law,
+ if any, provides otherwise), excluding such jurisdiction's
+ conflict-of-law provisions. Any litigation relating to this
+ License shall be subject to the jurisdiction of the courts located
+ in the jurisdiction and venue specified in a notice contained
+ within the Original Software, with the losing party responsible
+ for costs, including, without limitation, court costs and
+ reasonable attorneys' fees and expenses. The application of the
+ United Nations Convention on Contracts for the International Sale
+ of Goods is expressly excluded. Any law or regulation which
+ provides that the language of a contract shall be construed
+ against the drafter shall not apply to this License. You agree
+ that You alone are responsible for compliance with the United
+ States export administration regulations (and the export control
+ laws and regulation of any other countries) when You use,
+ distribute or otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+ As between Initial Developer and the Contributors, each party is
+ responsible for claims and damages arising, directly or
+ indirectly, out of its utilization of rights under this License
+ and You agree to work with Initial Developer and Contributors to
+ distribute such responsibility on an equitable basis. Nothing
+ herein is intended or shall be deemed to constitute any admission
+ of liability.
+
+--------------------------------------------------------------------
+
+NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND
+DISTRIBUTION LICENSE (CDDL)
+
+For Covered Software in this distribution, this License shall
+be governed by the laws of the State of California (excluding
+conflict-of-law provisions).
+
+Any litigation relating to this License shall be subject to the
+jurisdiction of the Federal Courts of the Northern District of
+California and the state courts of the State of California, with
+venue lying in Santa Clara County, California.
diff --git a/README b/README
new file mode 100644
index 000000000000..b51a32d357bb
--- /dev/null
+++ b/README
@@ -0,0 +1,137 @@
+README file for the Heirloom Documentation Tools
+================================================
+
+The Heirloom Documentation Tools provide troff, nroff, and relat-
+ed utilities to format manual pages and other documents for out-
+put on terminals and printers. They are portable and enhanced
+versions of the utilities released by Sun as part of OpenSolaris,
+and, for pic, grap, mpm, and some minor parts, by Lucent as part
+of Plan 9.
+
+nroff is most prominently used to format Unix manual pages for
+viewing them on a terminal. This implementation consumes rela-
+tively few system resources and is thus suitable for small system
+distributions. It has been enhanced to generate UTF-8 output.
+
+troff generates typesetter output from the same document source
+code as nroff. Thus a special use of it is to prepare manual
+pages for printing. troff is a general-purpose typesetting pro-
+cessor, though. Significant features have been added in this im-
+plementation; see the "Nroff/Troff User's Manual", "Font Handling
+in Troff with PostScript Devices", and "Justification in Heirloom
+Troff" for details. All documents are included in the "doc" sub-
+directory of the source code distribution; compiled PDF files can
+be downloaded from the project home page.
+
+Currently, troff is almost exclusively targeted at generating
+output for PostScript interpreters. Its principal device in-
+dependence has been retained, though; the intermediate output
+language is largely unchanged. The troff driver for the Autolo-
+gic APS-5 is still included. It is untested since it would be
+surprising to find a phototypesetter of this type that is still
+in use, but serves as an experimentation aid for device indepen-
+dence.
+
+The source code has been compiled successfully on:
+
+OpenBSD CURRENT
+NetBSD 6.1.5, 7, CURRENT
+FreeBSD 8.4, 9.3, 10.1, CURRENT
+Linux Slackware 14.1, OpenSuse Tumbleweed
+Mac OS X
+SmartOS
+
+To build and install manually:
+
+- Adjust the installation paths and compiler settings in the file
+ "mk.config", which is in makefile syntax.
+
+- Execute "make", followed by "make install". "make mrproper"
+ will destroy all generated files.
+
+troff currently reads several binary files which are built dur-
+ing the compilation process. It is thus not possible to cross-
+compile.
+
+The locale-dependent character input in troff assumes that the C
+library represents wchar_t values as Unicode characters. This is
+the case on any modern Unix system.
+
+The "pm" utility requires a C++ compiler. If such a compiler is
+not available, delete the "mpm" directory from the list of sub-
+directories to build in the top-level "makefile". The "pm" util-
+ity is rarely used, so it should not be too dramatic if it is
+missing.
+
+In order to use the utilities for formatting manual pages, note
+the following:
+
+- You will normally want to use "nroff -Tlocale". By default,
+ nroff generates output for a Teletype Model 37 with half-line
+ capabilities which will lead to weird results with any xterm or
+ CRT terminal.
+
+- tbl(1) should be used with option -Tlocale when producing input
+ for nroff and with option -g when producing input for troff.
+
+- "nroff -Tlocale" will generate UTF-8 output if permitted by the
+ current setting of the LC_CTYPE locale, and the same as "nroff
+ -Tlp" otherwise.
+
+- Macro names are normally restricted to two characters for com-
+ patibility with previous versions of nroff. With "nroff -mg",
+ long macro names and other groff extensions are accepted. You
+ will normally want to enable this because you are much more
+ likely to encounter manual pages written with groff in mind
+ than manual pages that require strict Unix compatibility.
+
+- You need to filter the output of nroff through "col -x".
+
+- You need at least the "an" macro file to format manual pages.
+ If you also want to use the Berkeley "doc" macros, you also
+ need "doc*" and "andoc". "nroff -mandoc" will then switch au-
+ tomatically between the two macro packages.
+
+- Heirloom nroff can optimize line breaking over whole para-
+ graphs. This results in fewer ugly holes of successive spaces
+ in the output. To enable it with manual pages, add "-mpadj" to
+ the command line.
+
+- It is recommended that the "-msafe" macro package is used when
+ viewing manual pages. It will remove those requests that al-
+ low to call programs or to write to files. If your man com-
+ mand runs with privileges, you then also need to ensure that
+ the "TROFFMACS" environment variable is unset when nroff is ex-
+ ecuted. Otherwise, a malicious user might replace the "safe"
+ macro package with his own version.
+
+- Thus a complete pipeline to format manual pages for viewing is:
+
+ tbl -Tlocale input.1 | neqn | nroff -Tlocale -mg -msafe \
+ -mpadj -mandoc | col -x
+
+- If you like italic text to appear underlined and boldfaced text
+ to appear bold on a CRT or X Window System terminal, also add a
+ call to the "ul" filter:
+
+ tbl -Tlocale input.1 | neqn | nroff -Tlocale -mg -msafe \
+ -mpadj -mandoc | col -x | ul
+
+- To print manual pages with troff, use
+
+ tbl -g input.1 | eqn | troff -mg -msafe -mpadj -mandoc | \
+ dpost | lp
+
+- You should of course configure your "man" command such that
+ it executes these pipelines automatically for you. For the
+ "man" command from the Heirloom Toolchest, suitable entries in
+ "/etc/default/man" are:
+
+ NROFF=/usr/local/ucb/nroff -Tlocale -mg -msafe -mpadj
+ TROFF=/usr/local/ucb/troff -mg -msafe -mpadj
+ TBL=/usr/local/ucb/tbl -Tlocale
+ EQN=/usr/local/ucb/eqn
+ NEQN=/usr/local/ucb/neqn
+ TCAT=/usr/local/ucb/dpost
+ COL=/usr/local/ucb/col -x | ul
+ MACSET=-mandoc
diff --git a/README.md b/README.md
new file mode 100644
index 000000000000..7c7081fc70ac
--- /dev/null
+++ b/README.md
@@ -0,0 +1,32 @@
+For information about the Heirloom doctools please visit the project
+[webpage](http://n-t-roff.github.io/heirloom/doctools.html).
+
+Stable source code versions are available in the
+[releases archive](https://github.com/n-t-roff/heirloom-doctools/releases).
+
+Development snapshots can be downloaded as a zip archive with the "Download ZIP" button
+or with the git command
+```bash
+git clone https://github.com/n-t-roff/heirloom-doctools.git
+```
+Installation paths and compiler settings are adjusted in `mk.config`.
+The software is build with `make` and installed with `make install`.
+Generated files are removed with `make mrproper` afterwards.
+A git repository can be kept up-to-date with
+`git pull`.
+
+Bugs can be reported at the
+[issue list](https://github.com/n-t-roff/heirloom-doctools/issues).
+Please wait before creating a patch or a pull request,
+since someone else could already be working on this issue or has a solution.
+
+If there are any problems please send a mail to
+&lt;troff [at] arcor [dot] de&gt;.
+
+The GNU roff (groff) [mailing list](https://lists.gnu.org/mailman/listinfo/groff) is used for Heirloom doctools announcements and can also be used for discussions.
+The subject need to start with `[Heirloom]` in this case.
+
+It is recommended to subscribe to the groff mailing list for every &lowast;roff user.
+But please *don't* send Heirloom bug reports to the groff list, use the
+[issue list](https://github.com/n-t-roff/heirloom-doctools/issues)
+instead.
diff --git a/checknr/Makefile.mk b/checknr/Makefile.mk
new file mode 100644
index 000000000000..646fc7dc7553
--- /dev/null
+++ b/checknr/Makefile.mk
@@ -0,0 +1,21 @@
+OBJ = checknr.o
+
+FLAGS = $(DEFINES) -I../include
+
+.c.o:
+ $(CC) $(CFLAGS) $(WARN) $(CPPFLAGS) $(FLAGS) -c $<
+
+all: checknr
+
+checknr: $(OBJ)
+ $(CC) $(CFLAGS) $(LDFLAGS) $(OBJ) $(LIBS) -o checknr
+
+install:
+ $(INSTALL) -c checknr $(ROOT)$(BINDIR)/checknr
+ $(STRIP) $(ROOT)$(BINDIR)/checknr
+ $(INSTALL) -c -m 644 checknr.1 $(ROOT)$(MANDIR)/man1/checknr.1
+
+clean:
+ rm -f $(OBJ) checknr core log *~
+
+mrproper: clean
diff --git a/checknr/checknr.1 b/checknr/checknr.1
new file mode 100644
index 000000000000..aca24711722a
--- /dev/null
+++ b/checknr/checknr.1
@@ -0,0 +1,143 @@
+.\"
+.\" This code contains changes by
+.\" Gunnar Ritter, Freiburg i. Br., Germany, 2005. All rights reserved.
+.\"
+.\" Conditions 1, 2, and 4 and the no-warranty notice below apply
+.\" to these changes.
+.\"
+.\"
+.\" Copyright (c) 1980 Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowedgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" from 4.3BSD checknr.1 6.2 (Berkeley) 5/7/86
+.\".TH CHECKNR 1 "May 7, 1986"
+.\"
+.\" Sccsid @(#)checknr.1b 1.2 (gritter) 11/6/05
+.\"
+.TH CHECKNR 1 "11/6/05" "Heirloom Documentation Tools" "BSD System Compatibility"
+.UC 4
+.SH NAME
+checknr \- check nroff/troff files
+.SH SYNOPSIS
+.HP
+.ad l
+.nh
+\fBchecknr\fR
+[\fB\-fs\fR]
+[\fB\-a.\fIx1\fB.\fIy1\fB.\fIx2\fB.\fIy2\fB.\fR\ ...\ \fB.\fIxn\fB.\fIyn\fR]
+[\fB\-c.\fIx1\fB.\fIx2\fB.\fIx3\fR\ ...\ \fB.\fIxn\fR]
+[\fIfile\fR ...]
+.br
+.hy 1
+.ad b
+.SH DESCRIPTION
+.I Checknr
+checks a list of
+.IR nroff (1)
+or
+.IR troff (1)
+input files for certain kinds of errors
+involving mismatched opening and closing delimiters
+and unknown commands.
+If no files are specified,
+.I checknr
+checks the standard input.
+Delimeters checked are:
+.IP (1)
+Font changes using \efx ... \efP.
+.IP (2)
+Size changes using \esx ... \es0.
+.IP (3)
+Macros that come in open ... close forms, for example,
+the .TS and .TE macros which must always come in pairs.
+.PP
+.I Checknr
+knows about the
+.IR ms (7)
+and
+.IR me (7)
+macro packages.
+.PP
+Additional pairs of macros can be added to the list using the
+.B \-a
+option.
+This must be followed by groups defining pairs of macros.
+The characters in each group are
+a period,
+the first macro name,
+another period,
+and the second macro name.
+For example, to define a pair .BS and .ES, use \-\fBa\fP.BS.ES
+.PP
+The
+.B \-c
+option defines commands which would otherwise be complained about
+as undefined.
+.PP
+The
+.B \-f
+option requests
+.I checknr
+to ignore \ef font changes.
+.PP
+The
+.B \-s
+option requests
+.I checknr
+to ignore \es size changes.
+.PP
+.I Checknr
+is intended to be used on documents that are prepared with
+.I checknr
+in mind, much the same as
+.I lint.
+It expects a certain document writing style for \ef and \es commands,
+in that each \efx must be terminated with \efP and
+each \esx must be terminated with \es0.
+While it will work to directly go into the next font or explicitly
+specify the original font or point size,
+and many existing documents actually do this,
+such a practice will produce complaints from
+.I checknr.
+Since it is probably better to use the \efP and \es0 forms anyway,
+you should think of this as a contribution to your document
+preparation style.
+.SH SEE\ ALSO
+nroff(1), troff(1), checkeq(1), ms(7), me(7)
+.SH DIAGNOSTICS
+Complaints about unmatched delimiters.
+.br
+Complaints about unrecognized commands.
+.br
+Various complaints about the syntax of commands.
+.SH NOTES
+Does not correctly recognize certain reasonable constructs,
+such as conditionals.
diff --git a/checknr/checknr.c b/checknr/checknr.c
new file mode 100644
index 000000000000..b7dde0af2004
--- /dev/null
+++ b/checknr/checknr.c
@@ -0,0 +1,669 @@
+/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
+/* All Rights Reserved */
+
+
+/*
+ * Copyright (c) 1980 Regents of the University of California.
+ * All rights reserved. The Berkeley software License Agreement
+ * specifies the terms and conditions for redistribution.
+ */
+
+/*
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+/* from OpenSolaris "checknr.c 1.8 05/06/02 SMI" */
+
+/*
+ * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany
+ */
+#if __GNUC__ >= 3 && __GNUC_MINOR__ >= 4 || __GNUC__ >= 4
+#define USED __attribute__ ((used))
+#elif defined __GNUC__
+#define USED __attribute__ ((unused))
+#else
+#define USED
+#endif
+static const char sccsid[] USED = "@(#)/usr/ucb/checknr.sl 1.3 (gritter) 11/6/05";
+
+/*
+ * checknr: check an nroff/troff input file for matching macro calls.
+ * we also attempt to match size and font changes, but only the embedded
+ * kind. These must end in \s0 and \fP resp. Maybe more sophistication
+ * later but for now think of these restrictions as contributions to
+ * structured typesetting.
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <ctype.h>
+#include "global.h"
+
+static int maxstk; /* Stack size */
+#define MAXBR 100 /* Max number of bracket pairs known */
+#define MAXCMDS 500 /* Max number of commands known */
+
+/*
+ * The stack on which we remember what we've seen so far.
+ */
+static struct stkstr {
+ int opno; /* number of opening bracket */
+ int pl; /* '+', '-', ' ' for \s, 1 for \f, 0 for .ft */
+ int parm; /* parm to size, font, etc */
+ int lno; /* line number the thing came in in */
+} *stk;
+static int stktop;
+
+/*
+ * The kinds of opening and closing brackets.
+ */
+static struct brstr {
+ char *opbr;
+ char *clbr;
+} br[MAXBR] = {
+ /* A few bare bones troff commands */
+#define SZ 0
+ { "sz", "sz" }, /* also \s */
+#define FT 1
+ { "ft", "ft" }, /* also \f */
+ /* the -mm package */
+ { "AL", "LE" },
+ { "AS", "AE" },
+ { "BL", "LE" },
+ { "BS", "BE" },
+ { "DF", "DE" },
+ { "DL", "LE" },
+ { "DS", "DE" },
+ { "FS", "FE" },
+ { "ML", "LE" },
+ { "NS", "NE" },
+ { "RL", "LE" },
+ { "VL", "LE" },
+ /* the -ms package */
+ { "AB", "AE" },
+ { "BD", "DE" },
+ { "CD", "DE" },
+ { "DS", "DE" },
+ { "FS", "FE" },
+ { "ID", "DE" },
+ { "KF", "KE" },
+ { "KS", "KE" },
+ { "LD", "DE" },
+ { "LG", "NL" },
+ { "QS", "QE" },
+ { "RS", "RE" },
+ { "SM", "NL" },
+ { "XA", "XE" },
+ { "XS", "XE" },
+ /* The -me package */
+ { "(b", ")b" },
+ { "(c", ")c" },
+ { "(d", ")d" },
+ { "(f", ")f" },
+ { "(l", ")l" },
+ { "(q", ")q" },
+ { "(x", ")x" },
+ { "(z", ")z" },
+ /* Things needed by preprocessors */
+ { "EQ", "EN" },
+ { "TS", "TE" },
+ /* Refer */
+ { "[", "]" },
+ { NULL, NULL }
+};
+
+/*
+ * All commands known to nroff, plus macro packages.
+ * Used so we can complain about unrecognized commands.
+ */
+static char *knowncmds[MAXCMDS] = {
+"$c", "$f", "$h", "$p", "$s", "(b", "(c", "(d", "(f", "(l", "(q", "(t",
+"(x", "(z", ")b", ")c", ")d", ")f", ")l", ")q", ")t", ")x", ")z", "++",
+"+c", "1C", "1c", "2C", "2c", "@(", "@)", "@C", "@D", "@F", "@I", "@M",
+"@c", "@e", "@f", "@h", "@m", "@n", "@o", "@p", "@r", "@t", "@z", "AB",
+"AE", "AF", "AI", "AL", "AM", "AS", "AT", "AU", "AX", "B", "B1", "B2",
+"BD", "BE", "BG", "BL", "BS", "BT", "BX", "C1", "C2", "CD", "CM", "CT",
+"D", "DA", "DE", "DF", "DL", "DS", "DT", "EC", "EF", "EG", "EH", "EM",
+"EN", "EQ", "EX", "FA", "FD", "FE", "FG", "FJ", "FK", "FL", "FN", "FO",
+"FQ", "FS", "FV", "FX", "H", "HC", "HD", "HM", "HO", "HU", "I", "ID",
+"IE", "IH", "IM", "IP", "IX", "IZ", "KD", "KE", "KF", "KQ", "KS", "LB",
+"LC", "LD", "LE", "LG", "LI", "LP", "MC", "ME", "MF", "MH", "ML", "MR",
+"MT", "ND", "NE", "NH", "NL", "NP", "NS", "OF", "OH", "OK", "OP", "P",
+"P1", "PF", "PH", "PP", "PT", "PX", "PY", "QE", "QP", "QS", "R", "RA",
+"RC", "RE", "RL", "RP", "RQ", "RS", "RT", "S", "S0", "S2", "S3", "SA",
+"SG", "SH", "SK", "SM", "SP", "SY", "T&", "TA", "TB", "TC", "TD", "TE",
+"TH", "TL", "TM", "TP", "TQ", "TR", "TS", "TX", "UL", "US", "UX", "VL",
+"WC", "WH", "XA", "XD", "XE", "XF", "XK", "XP", "XS", "[", "[-", "[0",
+"[1", "[2", "[3", "[4", "[5", "[<", "[>", "[]", "]", "]-", "]<", "]>",
+"][", "ab", "ac", "ad", "af", "am", "ar", "as", "b", "ba", "bc", "bd",
+"bi", "bl", "bp", "br", "bx", "c.", "c2", "cc", "ce", "cf", "ch",
+"chop", "cs", "ct", "cu", "da", "de", "di", "dl", "dn", "do", "ds",
+"dt", "dw", "dy", "ec", "ef", "eh", "el", "em", "eo", "ep", "ev",
+"evc", "ex", "fallback", "fc", "feature", "fi", "fl", "flig", "fo",
+"fp", "ft", "ftr", "fz", "fzoom", "hc", "he", "hidechar", "hl", "hp",
+"ht", "hw", "hx", "hy", "hylang", "i", "ie", "if", "ig", "in", "ip",
+"it", "ix", "kern", "kernafter", "kernbefore", "kernpair", "lc", "lg",
+"lhang", "lc_ctype", "li", "ll", "ln", "lo", "lp", "ls", "lt", "m1",
+"m2", "m3", "m4", "mc", "mk", "mo", "n1", "n2", "na", "ne", "nf", "nh",
+"nl", "nm", "nn", "np", "nr", "ns", "nx", "of", "oh", "os", "pa",
+"papersize", "pc", "pi", "pl", "pm", "pn", "po", "pp", "ps", "q",
+"r", "rb", "rd", "re", "recursionlimit", "return", "rhang", "rm",
+"rn", "ro", "rr", "rs", "rt", "sb", "sc", "sh", "shift", "sk", "so",
+"sp", "ss", "st", "sv", "sz", "ta", "tc", "th", "ti", "tl", "tm", "tp",
+"tr", "track", "u", "uf", "uh", "ul", "vs", "wh", "xflag", "xp", "yr",
+0
+};
+
+static int lineno; /* current line number in input file */
+static char *line; /* the current line */
+static size_t linesize; /* allocated size of current line */
+static char *cfilename; /* name of current file */
+static int nfiles; /* number of files to process */
+static int fflag; /* -f: ignore \f */
+static int sflag; /* -s: ignore \s */
+static int ncmds; /* size of knowncmds */
+static int slot; /* slot in knowncmds found by binsrch */
+
+static void growstk(void);
+static void usage(void);
+static void process(FILE *f);
+static void complain(int i);
+static void prop(int i);
+static void chkcmd(char *line, char *mac);
+static void nomatch(char *mac);
+static int eq(char *s1, char *s2);
+static void pe(int lineno);
+static void checkknown(char *mac);
+static void addcmd(char *line);
+static void addmac(char *mac);
+static int binsrch(char *mac);
+static char *fgetline(char **line, size_t *linesize, size_t *llen, FILE *fp);
+
+static void
+growstk(void)
+{
+ stktop++;
+ if (stktop >= maxstk) {
+ maxstk *= 2;
+ stk = realloc(stk, sizeof *stk * maxstk);
+ }
+}
+
+int
+main(int argc, char **argv)
+{
+ FILE *f;
+ int i;
+ char *cp, *cq, c;
+
+ stk = calloc(sizeof *stk, maxstk = 100);
+ /* Figure out how many known commands there are */
+ while (knowncmds[ncmds])
+ ncmds++;
+ while (argc > 1 && argv[1][0] == '-') {
+ switch (argv[1][1]) {
+
+ /* -a: add pairs of macros */
+ case 'a':
+ /* look for empty macro slots */
+ for (i = 0; br[i].opbr; i++)
+ ;
+ cp = &argv[1][3];
+ while (*cp) {
+ size_t s;
+ if (i >= MAXBR - 3) {
+ printf("Only %d known pairs allowed\n",
+ MAXBR/2);
+ exit(1);
+ }
+ for (cq = cp; *cq && *cq != '.'; cq++);
+ if (*cq != '.')
+ usage();
+ *cq = 0;
+ s = cq - cp + 1;
+ br[i].opbr = malloc(s);
+ n_strcpy(br[i].opbr, cp, s);
+ *cq = '.';
+ cp = &cq[1];
+ for (cq = cp; *cq && *cq != '.'; cq++);
+ c = *cq;
+ *cq = 0;
+ s = cq - cp + 1;
+ br[i].clbr = malloc(s);
+ n_strcpy(br[i].clbr, cp, s);
+ *cq = c;
+ cp = c ? &cq[1] : cq;
+ /* knows pairs are also known cmds */
+ addmac(br[i].opbr);
+ addmac(br[i].clbr);
+ i++;
+ }
+ break;
+
+ /* -c: add known commands */
+ case 'c':
+ cp = &argv[1][3];
+ while (*cp) {
+ for (cq = cp; *cq && *cq != '.'; cq++);
+ c = *cq;
+ *cq = 0;
+ addmac(cp);
+ *cq = c;
+ cp = c ? &cq[1] : cq;
+ }
+ break;
+
+ /* -f: ignore font changes */
+ case 'f':
+ fflag = 1;
+ break;
+
+ /* -s: ignore size changes */
+ case 's':
+ sflag = 1;
+ break;
+ default:
+ usage();
+ }
+ argc--; argv++;
+ }
+
+ nfiles = argc - 1;
+
+ if (nfiles > 0) {
+ for (i = 1; i < argc; i++) {
+ cfilename = argv[i];
+ f = fopen(cfilename, "r");
+ if (f == NULL) {
+ perror(cfilename);
+ exit(1);
+ }
+ else {
+ process(f);
+ fclose(f);
+ }
+ }
+ } else {
+ cfilename = "stdin";
+ process(stdin);
+ }
+ return (0);
+}
+
+static void
+usage(void)
+{
+ printf("Usage: checknr -s -f -a.xx.yy.xx.yy... -c.xx.xx.xx...\n");
+ exit(1);
+}
+
+static void
+process(FILE *f)
+{
+ int i, n;
+ char mac[512]; /* The current macro or nroff command */
+ int pl;
+
+ stktop = -1;
+ for (lineno = 1; fgetline(&line, &linesize, NULL, f); lineno++) {
+ if (line[0] == '.') {
+ /*
+ * find and isolate the macro/command name.
+ */
+ strncpy(mac, line+1, sizeof mac-1)[sizeof mac-1] = 0;
+ if (isspace(mac[0]&0377)) {
+ pe(lineno);
+ printf("Empty command\n");
+ } else {
+ for (i = 1; mac[i]; i++)
+ if (isspace(mac[i]&0377)) {
+ mac[i] = 0;
+ break;
+ }
+ }
+
+ /*
+ * Is it a known command?
+ */
+ checkknown(mac);
+
+ /*
+ * Should we add it?
+ */
+ if (eq(mac, "de"))
+ addcmd(line);
+
+ chkcmd(line, mac);
+ }
+
+ /*
+ * At this point we process the line looking
+ * for \s and \f.
+ */
+ for (i = 0; line[i]; i++)
+ if (line[i] == '\\' && (i == 0 || line[i-1] != '\\')) {
+ if (!sflag && line[++i] == 's') {
+ pl = line[++i]&0377;
+ if (isdigit(pl)) {
+ n = pl - '0';
+ pl = ' ';
+ } else
+ n = 0;
+ while (isdigit(line[++i]&0377))
+ n = 10 * n + line[i] - '0';
+ i--;
+ if (n == 0) {
+ if (stk[stktop].opno == SZ) {
+ stktop--;
+ } else {
+ pe(lineno);
+ printf(
+ "unmatched \\s0\n");
+ }
+ } else {
+ growstk();
+ stk[stktop].opno = SZ;
+ stk[stktop].pl = pl;
+ stk[stktop].parm = n;
+ stk[stktop].lno = lineno;
+ }
+ } else if (!fflag && line[i] == 'f') {
+ n = line[++i];
+ if (n == 'P') {
+ if (stk[stktop].opno == FT) {
+ stktop--;
+ } else {
+ pe(lineno);
+ printf(
+ "unmatched \\fP\n");
+ }
+ } else {
+ growstk();
+ stk[stktop].opno = FT;
+ stk[stktop].pl = 1;
+ stk[stktop].parm = n;
+ stk[stktop].lno = lineno;
+ }
+ }
+ }
+ }
+ /*
+ * We've hit the end and look at all this stuff that hasn't been
+ * matched yet! Complain, complain.
+ */
+ for (i = stktop; i >= 0; i--) {
+ complain(i);
+ }
+}
+
+static void
+complain(int i)
+{
+ pe(stk[i].lno);
+ printf("Unmatched ");
+ prop(i);
+ printf("\n");
+}
+
+static void
+prop(int i)
+{
+ if (stk[i].pl == 0)
+ printf(".%s", br[stk[i].opno].opbr);
+ else switch (stk[i].opno) {
+ case SZ:
+ printf("\\s%c%d", stk[i].pl, stk[i].parm);
+ break;
+ case FT:
+ printf("\\f%c", stk[i].parm);
+ break;
+ default:
+ printf("Bug: stk[%d].opno = %d = .%s, .%s",
+ i, stk[i].opno, br[stk[i].opno].opbr,
+ br[stk[i].opno].clbr);
+ }
+}
+
+/* ARGSUSED */
+static void
+chkcmd(char *line, char *mac)
+{
+ int i;
+
+ /*
+ * Check to see if it matches top of stack.
+ */
+ if (stktop >= 0 && eq(mac, br[stk[stktop].opno].clbr))
+ stktop--; /* OK. Pop & forget */
+ else {
+ /* No. Maybe it's an opener */
+ for (i = 0; br[i].opbr; i++) {
+ if (eq(mac, br[i].opbr)) {
+ /* Found. Push it. */
+ growstk();
+ stk[stktop].opno = i;
+ stk[stktop].pl = 0;
+ stk[stktop].parm = 0;
+ stk[stktop].lno = lineno;
+ break;
+ }
+ /*
+ * Maybe it's an unmatched closer.
+ * NOTE: this depends on the fact
+ * that none of the closers can be
+ * openers too.
+ */
+ if (eq(mac, br[i].clbr)) {
+ nomatch(mac);
+ break;
+ }
+ }
+ }
+}
+
+static void
+nomatch(char *mac)
+{
+ int i, j;
+
+ /*
+ * Look for a match further down on stack
+ * If we find one, it suggests that the stuff in
+ * between is supposed to match itself.
+ */
+ for (j = stktop; j >= 0; j--)
+ if (eq(mac, br[stk[j].opno].clbr)) {
+ /* Found. Make a good diagnostic. */
+ if (j == stktop-2) {
+ /*
+ * Check for special case \fx..\fR and don't
+ * complain.
+ */
+ if (stk[j+1].opno == FT &&
+ stk[j+1].parm != 'R' &&
+ stk[j+2].opno == FT &&
+ stk[j+2].parm == 'R') {
+ stktop = j -1;
+ return;
+ }
+ /*
+ * We have two unmatched frobs. Chances are
+ * they were intended to match, so we mention
+ * them together.
+ */
+ pe(stk[j+1].lno);
+ prop(j+1);
+ printf(" does not match %d: ", stk[j+2].lno);
+ prop(j+2);
+ printf("\n");
+ } else for (i = j+1; i <= stktop; i++) {
+ complain(i);
+ }
+ stktop = j-1;
+ return;
+ }
+ /* Didn't find one. Throw this away. */
+ pe(lineno);
+ printf("Unmatched .%s\n", mac);
+}
+
+/* eq: are two strings equal? */
+static int
+eq(char *s1, char *s2)
+{
+ return (strcmp(s1, s2) == 0);
+}
+
+/* print the first part of an error message, given the line number */
+static void
+pe(int lineno)
+{
+ if (nfiles > 1)
+ printf("%s: ", cfilename);
+ printf("%d: ", lineno);
+}
+
+static void
+checkknown(char *mac)
+{
+
+ if (eq(mac, "."))
+ return;
+ if (binsrch(mac) >= 0)
+ return;
+ if (mac[0] == '\\' && mac[1] == '"') /* comments */
+ return;
+
+ pe(lineno);
+ printf("Unknown command: .%s\n", mac);
+}
+
+/*
+ * We have a .de xx line in "line". Add xx to the list of known commands.
+ */
+static void
+addcmd(char *line)
+{
+ char *mac;
+
+ /* grab the macro being defined */
+ mac = line+4;
+ while (isspace(*mac&0377))
+ mac++;
+ if (*mac == 0) {
+ pe(lineno);
+ printf("illegal define: %s\n", line);
+ return;
+ }
+ mac[2] = 0;
+ if (isspace(mac[1]&0377) || mac[1] == '\\')
+ mac[1] = 0;
+ addmac(mac);
+}
+
+/*
+ * Add mac to the list. We should really have some kind of tree
+ * structure here but this is a quick-and-dirty job and I just don't
+ * have time to mess with it. (I wonder if this will come back to haunt
+ * me someday?) Anyway, I claim that .de is fairly rare in user
+ * nroff programs, and the loop below is pretty fast.
+ */
+static void
+addmac(char *mac)
+{
+ char **src, **dest, **loc;
+ size_t s;
+
+ if (binsrch(mac) >= 0) { /* it's OK to redefine something */
+#ifdef DEBUG
+ printf("binsrch(%s) -> already in table\n", mac);
+#endif
+ return;
+ }
+ /* binsrch sets slot as a side effect */
+#ifdef DEBUG
+printf("binsrch(%s) -> %d\n", mac, slot);
+#endif
+ if (ncmds >= MAXCMDS) {
+ printf("Only %d known commands allowed\n", MAXCMDS);
+ exit(1);
+ }
+ loc = &knowncmds[slot];
+ src = &knowncmds[ncmds-1];
+ dest = src+1;
+ while (dest > loc)
+ *dest-- = *src--;
+ s = strlen(mac) + 1;
+ *loc = malloc(s);
+ n_strcpy(*loc, mac, s);
+ ncmds++;
+#ifdef DEBUG
+ printf("after: %s %s %s %s %s, %d cmds\n",
+ knowncmds[slot-2], knowncmds[slot-1], knowncmds[slot],
+ knowncmds[slot+1], knowncmds[slot+2], ncmds);
+#endif
+}
+
+/*
+ * Do a binary search in knowncmds for mac.
+ * If found, return the index. If not, return -1.
+ */
+static int
+binsrch(char *mac)
+{
+ char *p; /* pointer to current cmd in list */
+ int d; /* difference if any */
+ int mid; /* mid point in binary search */
+ int top, bot; /* boundaries of bin search, inclusive */
+
+ top = ncmds-1;
+ bot = 0;
+ while (top >= bot) {
+ mid = (top+bot)/2;
+ p = knowncmds[mid];
+ d = p[0] - mac[0];
+ if (d == 0)
+ d = strcmp(&p[1], &mac[1]);
+ if (d == 0)
+ return (mid);
+ if (d < 0)
+ bot = mid + 1;
+ else
+ top = mid - 1;
+ }
+ slot = bot; /* place it would have gone */
+ return (-1);
+}
+
+#define LSIZE 256
+
+static char *
+fgetline(char **line, size_t *linesize, size_t *llen, FILE *fp)
+{
+ int c;
+ size_t n = 0;
+
+ if (*line == NULL || *linesize < LSIZE + n + 1)
+ *line = realloc(*line, *linesize = LSIZE + n + 1);
+ for (;;) {
+ if (n >= *linesize - LSIZE / 2)
+ *line = realloc(*line, *linesize += LSIZE);
+ c = getc(fp);
+ if (c != EOF) {
+ (*line)[n++] = c;
+ (*line)[n] = '\0';
+ if (c == '\n')
+ break;
+ } else {
+ if (n > 0)
+ break;
+ else
+ return NULL;
+ }
+ }
+ if (llen)
+ *llen = n;
+ return *line;
+}
diff --git a/col/Makefile.mk b/col/Makefile.mk
new file mode 100644
index 000000000000..d739a4dd19ff
--- /dev/null
+++ b/col/Makefile.mk
@@ -0,0 +1,22 @@
+BIN = col
+
+OBJ = col.o
+
+FLAGS = $(DEFINES) -I../include
+
+all: $(BIN)
+
+$(BIN): $(OBJ)
+ $(CC) ${CFLAGS} $(LDFLAGS) $(OBJ) -o $(BIN)
+
+install:
+ $(INSTALL) -c $(BIN) $(ROOT)$(BINDIR)/$(BIN)
+ $(STRIP) $(ROOT)$(BINDIR)/$(BIN)
+
+clean:
+ rm -f $(OBJ) $(BIN) core log *~
+
+mrproper: clean
+
+.c.o:
+ ${CC} ${CFLAGS} ${CPPFLAGS} $(FLAGS) -c $<
diff --git a/col/col.c b/col/col.c
new file mode 100644
index 000000000000..4b2a2f77e291
--- /dev/null
+++ b/col/col.c
@@ -0,0 +1,654 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
+/* All Rights Reserved */
+
+
+/*
+ * col - filter reverse carraige motions
+ *
+ */
+
+
+#include <stdio.h>
+#include <ctype.h>
+#include <locale.h>
+#include <limits.h>
+#include <stdlib.h>
+#include <wctype.h>
+#include <unistd.h>
+#include <wchar.h>
+#include "global.h"
+
+#define PL 256
+#define ESC '\033'
+#define RLF '\013'
+#define SI '\017'
+#define SO '\016'
+#define GREEK 0200
+#define LINELN 4096
+#define gettext(x) x
+#ifndef iswascii
+# define iswascii(c) isascii(c)
+#endif
+
+wchar_t *page[PL];
+wchar_t lbuff[LINELN], *line;
+wchar_t *lbuffend = lbuff + LINELN - 1;
+wchar_t ws_blank[2] = {' ', 0};
+char esc_chars, underline, temp_off, smart;
+int bflag, xflag, fflag, pflag;
+int greeked;
+int half;
+int cp, lp;
+int ll, llh, mustwr;
+int pcp = 0;
+char *pgmname;
+
+#define USAGEMSG "usage:\tcol [-bfxp]\n"
+
+static void outc(wchar_t);
+static void store(int);
+static void fetch(int);
+static void emit(wchar_t *, int);
+static void incr(void);
+static void decr(void);
+static void wsinsert(wchar_t *, int);
+static void incr_line(int);
+static int wcscrwidth(wchar_t);
+
+int
+main(int argc, char **argv)
+{
+ int i, n;
+ int opt;
+ int greek;
+ int c;
+ wchar_t wc;
+ char byte;
+ static char fbuff[BUFSIZ];
+
+ setbuf(stdout, fbuff);
+ (void) setlocale(LC_ALL, "");
+ pgmname = argv[0];
+
+ while ((opt = getopt(argc, argv, "bfxp")) != EOF)
+ switch (opt) {
+ case 'b':
+ bflag++;
+ break;
+ case 'x':
+ xflag++;
+ break;
+ case 'f':
+ fflag++;
+ break;
+ case 'p':
+ pflag++;
+ break;
+ case '?':
+ default:
+ (void) fprintf(stderr, gettext(USAGEMSG));
+ exit(2);
+ }
+
+ argc -= optind;
+ if (argc >= 1) {
+ (void) fprintf(stderr, gettext(USAGEMSG));
+ exit(2);
+ }
+
+ for (ll = 0; ll < PL; ll++)
+ page[ll] = 0;
+
+ smart = temp_off = underline = esc_chars = '\0';
+ cp = 0;
+ ll = 0;
+ greek = 0;
+ mustwr = PL;
+ line = lbuff;
+
+ while ((c = getwchar()) != EOF) {
+ if (underline && temp_off && c > ' ') {
+ outc(ESC);
+ if (*line) {
+ incr_line(1);
+ }
+ *line = 'X';
+ incr_line(1);
+ *line = temp_off = '\0';
+ }
+ if (c != '\b')
+ if (esc_chars)
+ esc_chars = '\0';
+ switch (c) {
+ case '\n':
+ if (underline && !temp_off) {
+ if (*line)
+ incr_line(1);
+ *line = ESC;
+ incr_line(1);
+ *line = 'Y';
+ incr_line(1);
+ *line = '\0';
+ temp_off = '1';
+ }
+ incr();
+ incr();
+ cp = 0;
+ continue;
+
+ case '\0':
+ continue;
+
+ case ESC:
+ c = getwchar();
+ switch (c) {
+ case '7': /* reverse full line feed */
+ decr();
+ decr();
+ break;
+
+ case '8': /* reverse half line feed */
+ if (fflag)
+ decr();
+ else {
+ if (--half < -1) {
+ decr();
+ decr();
+ half += 2;
+ }
+ }
+ break;
+
+ case '9': /* forward half line feed */
+ if (fflag)
+ incr();
+ else {
+ if (++half > 0) {
+ incr();
+ incr();
+ half -= 2;
+ }
+ }
+ break;
+
+ default:
+ if (pflag) { /* pass through esc */
+ outc(ESC);
+ incr_line(1);
+ *line = c;
+ incr_line(1);
+ *line = '\0';
+ esc_chars = 1;
+ if (c == 'X')
+ underline = 1;
+ if (c == 'Y' && underline)
+ underline = temp_off = '\0';
+ if (c == ']')
+ smart = 1;
+ if (c == '[')
+ smart = '\0';
+ }
+ break;
+ }
+ continue;
+
+ case SO:
+ greek = GREEK;
+ /* greeked++; FIXME: temporarily disabled */
+ continue;
+
+ case SI:
+ greek = 0;
+ continue;
+
+ case RLF:
+ decr();
+ decr();
+ continue;
+
+ case '\r':
+ cp = 0;
+ continue;
+
+ case '\t':
+ cp = (cp + 8) & -8;
+ continue;
+
+ case '\b':
+ if (esc_chars) {
+ *line = '\b';
+ incr_line(1);
+ *line = '\0';
+ } else if (cp > 0)
+ cp--;
+ continue;
+
+ case ' ':
+ cp++;
+ continue;
+
+ default:
+ if (iswprint(c)) { /* if printable */
+ if (!greek) {
+ outc((wchar_t)c);
+ cp += wcscrwidth(c);
+ }
+ /*
+ * EUC (apply SO only when there can
+ * be corresponding character in CS1)
+ */
+ else if (iswascii(c)) {
+ byte = (c | greek);
+ n = mbtowc(&wc, &byte, 1);
+ if (!iswcntrl(c) && !iswspace(c) &&
+ n == 1) {
+ outc(wc);
+ cp += wcscrwidth(wc);
+ } else {
+ outc((wchar_t)c);
+ cp += wcscrwidth(c);
+ }
+ } else {
+ outc((wchar_t)c);
+ cp += wcscrwidth(c);
+ }
+
+ if ((cp + 1) > LINELN) {
+ (void) fprintf(stderr,
+ gettext("col: Line too long\n"));
+ exit(2);
+ }
+ }
+ continue;
+ }
+ }
+
+ for (i = 0; i < PL; i++)
+ if (page[(mustwr+i)%PL] != 0)
+ emit(page[(mustwr+i) % PL], mustwr+i-PL);
+ emit(ws_blank, (llh + 1) & -2);
+ return (0);
+}
+
+static void
+outc(wchar_t c)
+{
+ int n, i;
+ int width, widthl, widthc;
+ wchar_t *p1;
+ wchar_t c1;
+ char esc_chars = '\0';
+ if (lp > cp) {
+ line = lbuff;
+ lp = 0;
+ }
+
+ while (lp < cp) {
+ if (*line != '\b')
+ if (esc_chars)
+ esc_chars = '\0';
+ switch (*line) {
+ case ESC:
+ incr_line(1);
+ esc_chars = 1;
+ break;
+ case '\0':
+ *line = ' ';
+ lp++;
+ break;
+ case '\b':
+ /* if ( ! esc_chars ) */
+ lp--;
+ break;
+ default:
+ lp += wcscrwidth(*line);
+ }
+ incr_line(1);
+ }
+ while (*line == '\b') {
+ /*
+ * EUC (For a multi-column character, backspace characters
+ * are assumed to be used like "__^H^HXX", where "XX"
+ * represents a two-column character, and a backspace
+ * always goes back by one column.)
+ */
+ for (n = 0; *line == '\b'; incr_line(1)) {
+ n++;
+ lp--;
+ }
+ while (n > 0 && lp < cp) {
+ i = *line;
+ incr_line(1);
+ i = wcscrwidth(i);
+ n -= i;
+ lp += i;
+ }
+ }
+ while (*line == ESC)
+ incr_line(6);
+ widthc = wcscrwidth(c);
+ widthl = wcscrwidth(*line);
+ if (bflag || (*line == '\0') || *line == ' ') {
+ if (*line == '\0' || widthl == widthc) {
+ *line = c;
+ } else if (widthl > widthc) {
+ n = widthl - widthc;
+ wsinsert(line, n);
+ *line = c;
+ incr_line(1);
+ for (i = 0; i < n; i++) {
+ *line = ' ';
+ incr_line(1);
+ }
+ line = lbuff;
+ lp = 0;
+ } else {
+ n = widthc - widthl;
+ if (line < lbuffend) {
+ for (p1 = line+1; n > 0 && p1 < lbuffend;
+ n -= wcscrwidth(i)) {
+ i = *p1++;
+ }
+ *line = c;
+ if (p1 < lbuffend) {
+ n_wcscpy(line+1, p1, lbuffend -
+ line - 1);
+ } else {
+ (void) fprintf(stderr,
+ gettext("col: Line too long.\n"));
+ exit(1);
+ }
+ } else {
+ (void) fprintf(stderr,
+ gettext("col: Line too long.\n"));
+ exit(1);
+ }
+ }
+ } else {
+ if (smart && (widthl == 1) && (widthc == 1)) {
+ wchar_t c1, c2, c3, c4, c5, c6, c7;
+ incr_line(1);
+ c1 = *line;
+ *line = ESC;
+ incr_line(1);
+ c2 = *line;
+ *line = '[';
+ incr_line(1);
+ c3 = *line;
+ *line = '\b';
+ incr_line(1);
+ c4 = *line;
+ *line = ESC;
+ incr_line(1);
+ c5 = *line;
+ *line = ']';
+ incr_line(1);
+ c6 = *line;
+ *line = c;
+ incr_line(1);
+ while (c1) {
+ c7 = *line;
+ *line = c1;
+ incr_line(1);
+ c1 = c2;
+ c2 = c3;
+ c3 = c4;
+ c4 = c5;
+ c5 = c6;
+ c6 = c7;
+ }
+ } else {
+ if ((widthl == 1) && (widthc == 1)) {
+ wchar_t c1, c2, c3;
+ incr_line(1);
+ c1 = *line;
+ *line = '\b';
+ incr_line(1);
+ c2 = *line;
+ *line = c;
+ incr_line(1);
+ while (c1) {
+ c3 = *line;
+ *line = c1;
+ incr_line(1);
+ c1 = c2;
+ c2 = c3;
+ }
+ } else {
+ width = (widthc > widthl) ? widthc : widthl;
+ for (i = 0; i < width; i += wcscrwidth(c1)) {
+ c1 = *line;
+ incr_line(1);
+ }
+ wsinsert(line, width + (width - widthc + 1));
+ for (i = 0; i < width; i++) {
+ *line = '\b';
+ incr_line(1);
+ }
+ *line = c;
+ incr_line(1);
+ for (i = widthc; i < width; i++) {
+ *line = ' ';
+ incr_line(1);
+ }
+ }
+ }
+ lp = 0;
+ line = lbuff;
+ }
+}
+
+static void
+store(int lno)
+{
+ size_t bufsiz;
+ lno %= PL;
+ if (page[lno] != 0)
+ free((char *)page[lno]);
+ bufsiz = wcslen(lbuff) + 2;
+ page[lno] = (wchar_t *)malloc(bufsiz * sizeof(wchar_t));
+ if (page[lno] == 0) {
+ /* fprintf(stderr, "%s: no storage\n", pgmname); */
+ exit(2);
+ }
+ n_wcscpy(page[lno], lbuff, bufsiz);
+}
+
+static void
+fetch(int lno)
+{
+ wchar_t *p;
+
+ lno %= PL;
+ p = lbuff;
+ while (*p)
+ *p++ = '\0';
+ line = lbuff;
+ lp = 0;
+ if (page[lno])
+ n_wcscpy(line, page[lno], LINELN);
+}
+
+static void
+emit(wchar_t *s, int lineno)
+{
+ static int cline = 0;
+ int ncp;
+ wchar_t *p, *begin = s;
+ int cshifted;
+ char chr[MB_LEN_MAX + 1];
+
+ int c;
+ static int gflag = 0;
+
+ if (*s) {
+ if (gflag) {
+ (void) putwchar(SI);
+ gflag = 0;
+ }
+ while (cline < lineno - 1) {
+ (void) putwchar('\n');
+ pcp = 0;
+ cline += 2;
+ }
+ if (cline != lineno) {
+ (void) putwchar(ESC);
+ (void) putwchar('9');
+ cline++;
+ }
+ if (pcp)
+ (void) putwchar('\r');
+ pcp = 0;
+ p = s;
+ while (*p) {
+ ncp = pcp;
+ while (*p++ == ' ') {
+ if ((++ncp & 7) == 0 && !xflag) {
+ pcp = ncp;
+ (void) putwchar('\t');
+ }
+ }
+ if (!*--p)
+ break;
+ while (pcp < ncp) {
+ (void) putwchar(' ');
+ pcp++;
+ }
+ if (greeked) {
+ if (wctomb(chr, *p) == 1) {
+ if (gflag != (*chr & GREEK) &&
+ *p != '\b' &&
+ isascii(*chr ^ (gflag ^ GREEK)) &&
+ !iscntrl(*chr ^ (gflag ^ GREEK)) &&
+ !isspace(*chr ^ (gflag ^ GREEK))) {
+ if (gflag)
+ (void) putwchar(SI);
+ else
+ (void) putwchar(SO);
+ gflag ^= GREEK;
+ }
+ }
+ }
+ c = *p;
+ if (greeked) {
+ if (wctomb(chr, (wchar_t)c) == 1) {
+ cshifted = (*chr ^ GREEK);
+ if (isascii(cshifted) &&
+ !iscntrl(cshifted) &&
+ !isspace(cshifted))
+ (void) putwchar(*chr & ~GREEK);
+ } else
+ (void) putwchar(c);
+ } else
+ (void) putwchar(c);
+ if (c == '\b') {
+ if (p-begin >= 2 && *(p-2) && *(p-2) == ESC) {
+ pcp++;
+ } else
+ pcp--;
+ } else {
+ pcp += wcscrwidth(c);
+ }
+ p++;
+ }
+ }
+}
+
+static void
+incr(void)
+{
+ store(ll++);
+ if (ll > llh)
+ llh = ll;
+ if (ll >= mustwr && page[ll%PL]) {
+ emit(page[ll%PL], ll - PL);
+ mustwr++;
+ free((char *)page[ll%PL]);
+ page[ll%PL] = 0;
+ }
+ fetch(ll);
+}
+
+static void
+decr(void)
+{
+ if (ll > mustwr - PL) {
+ store(ll--);
+ fetch(ll);
+ }
+}
+
+static void
+wsinsert(wchar_t *s, int n)
+{
+ wchar_t *p1, *p2;
+
+
+ p1 = s + wcslen(s);
+ p2 = p1 + n;
+ while (p1 >= s)
+ *p2-- = *p1--;
+}
+
+/*
+ * incr_line - increments line pointer and checks for array out of bounds
+ * amt: assumed to be >= 1
+ * exit on error to avoid line pointer accessing out of the array
+ */
+static void
+incr_line(int amt)
+{
+ if (line < lbuffend - amt + 1) {
+ line += amt;
+ } else {
+ (void) fprintf(stderr, gettext("col: Line too long.\n"));
+ exit(1);
+ }
+}
+
+
+static int
+wcscrwidth(wchar_t wc)
+{
+ int nc;
+
+ if (wc == 0) {
+ /*
+ * if wc is a null character, needs to
+ * return 1 instead of 0.
+ */
+ return (1);
+ }
+ nc = wcwidth(wc);
+ if (nc > 0) {
+ return (nc);
+ } else {
+ return (0);
+ }
+}
diff --git a/configure b/configure
new file mode 100755
index 000000000000..0afb7c398090
--- /dev/null
+++ b/configure
@@ -0,0 +1,235 @@
+#!/bin/sh
+
+# Copyright (c) 2016, Carsten Kunze <carsten.kunze@arcor.de>
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+
+usage () {
+ echo "Usage: $0 [-s]"
+ echo " -s Silence output"
+ exit $1
+}
+
+SFLAG=
+MAKE=
+DEFS=
+LIB_LEX=
+LIB_CURSES=
+cat /dev/null > compat.h
+
+while [ $# -gt 0 ]; do
+ case $1 in
+ -s) SFLAG=1;;
+ *)
+ echo "$0: $1: Unknown option" >&2
+ usage 1;;
+ esac
+ shift
+done
+
+check_for () {
+ [ -e $LOG ] && echo >>$LOG
+ A="Checking for $1 ... "
+ echo "$A" >>$LOG
+ [ -z "$SFLAG" ] && printf "$A"
+}
+
+compile () {
+ rm -f ${TMPNAM}.o $TMPNAM $OUT $ERR
+ $MAKE -f $OUTMK $TMPNAM > $OUT 2> $ERR
+ RESULT=$?
+ cat $OUT $ERR >> $LOG
+ if [ $RESULT -eq 0 ]; then true; else false; fi
+}
+
+test_result () {
+ RESULT=$?
+ RESULT_TEXT=${1:-0} # 1: omit "no", 2: say nothing
+ if [ $RESULT -eq 0 ]; then
+ echo success >>$LOG
+ [ -z "$SFLAG" -a $RESULT_TEXT -lt 2 ] && \
+ echo "yes$PASS_TEXT"
+ PASS_TEXT=
+ [ -e $TMPC ] && rm -f $TMPC
+ true
+ else
+ [ -z "$SFLAG" -a $RESULT_TEXT -lt 1 ] && echo no
+ if [ -e $TMPC ]; then
+ echo "Failed program:" >>$LOG
+ pr -n -t $TMPC >>$LOG
+ rm -f $TMPC
+ fi
+ false
+ fi
+}
+
+gen_mk () {
+ [ $# -eq 0 ] && rm -f $OUTMK
+ [ -n "$LEX" ] && echo "LEX=$LEX" >> $OUTMK
+ [ -n "$FLOAT_STORE" ] && echo "FLOAT_STORE=$FLOAT_STORE" >> $OUTMK
+ [ -n "$DEFS" ] && echo "DEFINES=$DEFS" >> $OUTMK
+ [ -n "$INCDIR_CURSES" ] && echo "INCDIR_CURSES=$INCDIR_CURSES" >> $OUTMK
+ [ -n "$RPATH_CURSES" ] && echo "RPATH_CURSES=$RPATH_CURSES" >> $OUTMK
+ [ -n "$LIBDIR_CURSES" ] && echo "LIBDIR_CURSES=$LIBDIR_CURSES" \
+ >> $OUTMK
+ [ -n "$LIB_CURSES" ] && echo "LIB_CURSES=$LIB_CURSES" >> $OUTMK
+ [ -n "$LIB_AVLBST" ] && echo "LIB_AVLBST=$LIB_AVLBST" >> $OUTMK
+ [ -n "$LIB_LEX" ] && echo "LIB_LEX=$LIB_LEX" >> $OUTMK
+ [ -n "$__CDBG" ] && echo "__CDBG=$__CDBG" >> $OUTMK
+ [ -n "$__SAN" ] && echo "__SAN=$__SAN" >> $OUTMK
+ cat $INMK >> $OUTMK || exit 1
+}
+check_make () {
+ check_for "make(1)"
+
+ cat <<EOT >$TMPMK
+all:
+ true
+EOT
+ make -f $TMPMK >> $LOG 2>&1
+ test_result && {
+ MAKE=make
+ return
+ }
+
+ echo "Failed makefile:" >>$LOG
+ pr -n -t $TMPMK >>$LOG
+
+ check_for "bmake(1)"
+
+ cat <<EOT >$TMPMK
+all:
+ true
+EOT
+ bmake -f $TMPMK >> $LOG 2>&1
+ test_result && MAKE=bmake
+}
+check_lex () {
+ check_for '$(LEX)'
+
+ cat <<EOT >$TMPL
+%%
+%%
+int main() { return 0; }
+int yywrap(void) { return 0; }
+EOT
+ compile
+ test_result && return
+
+ check_for 'flex(1)'
+
+ LEX=flex
+ gen_mk
+ compile
+ test_result && return
+
+ check_for 'lex(1)'
+
+ LEX=lex
+ gen_mk
+ compile
+ test_result && return
+}
+check_strlcpy () {
+ check_for "strlcpy(3)"
+
+ cat <<EOT >$TMPC
+#include <string.h>
+int
+main(int argc, char **argv) {
+ char a[10];
+ (void)argc;
+ strlcpy(a, *argv, sizeof a);
+ return 0;
+}
+EOT
+ compile
+ if test_result; then
+ DEFS="$DEFS -DHAVE_STRLCPY"
+ else
+ H=compat.h
+ grep -q '<sys/types\.h>' $H 2>/dev/null || cat <<EOT >>$H
+#include <sys/types.h>
+EOT
+ cat <<EOT >>$H
+size_t strlcpy(char *, const char *, size_t);
+EOT
+ fi
+}
+check_strlcat () {
+ check_for "strlcat(3)"
+
+ cat <<EOT >$TMPC
+#include <string.h>
+int
+main(int argc, char **argv) {
+ char a[10];
+ (void)argc;
+ *a = 0;
+ strlcat(a, *argv, sizeof a);
+ return 0;
+}
+EOT
+ compile
+ if test_result; then
+ DEFS="$DEFS -DHAVE_STRLCAT"
+ else
+ H=compat.h
+ grep -q '<sys/types\.h>' $H 2>/dev/null || cat <<EOT >>$H
+#include <sys/types.h>
+EOT
+ cat <<EOT >>$H
+size_t strlcat(char *, const char *, size_t);
+EOT
+ fi
+}
+check_wcslcpy () {
+ check_for "wcslcpy(3)"
+
+ cat <<EOT >$TMPC
+#include <stdio.h>
+#include <wchar.h>
+int
+main() {
+ wchar_t a, b;
+ a = getwchar();
+ wcslcpy(&b, &a, 1);
+ return 0;
+}
+EOT
+ compile
+ test_result && DEFS="$DEFS -DHAVE_WCSLCPY"
+}
+ [ ! -s compat.h ] && rm compat.h
+OUTMK=cfg.mk
+INMK=mk.config
+CFG=config
+TMPNAM=.$CFG
+TMPMK=${TMPNAM}.mk
+TMPC=${TMPNAM}.c
+TMPL=${TMPNAM}.l
+OUT=${TMPNAM}.out
+ERR=${TMPNAM}.err
+LOG=${CFG}.log
+rm -f $LOG
+gen_mk
+
+check_make
+check_lex
+check_strlcpy
+check_strlcat
+check_wcslcpy
+
+gen_mk
+cat version.mk >> $OUTMK || exit 1
+rm -f $TMPNAM*
diff --git a/doc/fonts/README b/doc/fonts/README
new file mode 100644
index 000000000000..8f234482c664
--- /dev/null
+++ b/doc/fonts/README
@@ -0,0 +1,13 @@
+README for the Heirloom Troff Font Handling Manual
+==================================================
+
+To build this manual, you need the Garamond Premier Pro
+Opticals fonts from Adobe, and need to set the TROFFONTS
+variable accordingly.
+
+Note that as of autumn 2005, it was not possible to
+download fonts bought directly from Adobe using a Linux
+system. There are many other shops that sell Adobe fonts,
+though, and these usually allow downloads for Linux users.
+
+Gunnar Ritter 01/08/07
diff --git a/doc/fonts/doc.more b/doc/fonts/doc.more
new file mode 100644
index 000000000000..ec6911ae3e2b
--- /dev/null
+++ b/doc/fonts/doc.more
@@ -0,0 +1,1518 @@
+
+
+
+
+
+ Font Handling in Troff With PostScript
+ Devices
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FONT HANDLING IN TROFF
+
+ WITH POSTSCRIPT DEVICES
+
+
+
+
+
+ Gunnar Ritter
+
+ 10/24/06
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Heirloom Documentation Tools
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ http://n‐t‐
+ roff.github.io/heirloom/doctools.html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ _T_h_e _b_a_s_i_c_s
+
+ Heirloom _t_r_o_f_f understands two ways to
+ select PostScript fonts.
+ The current method can access PostScript
+ font files directly. Fonts are selected
+ using an extended ‘‘.fp’’ request. As
+ simple examples,
+
+ .fp 0 R somefont pfb
+ .ft R
+ Here is some text in somefont.
+ Here is some text in somefont.
+
+ or, with the Linux Libertine font used in
+ this document,
+
+ .fp 0 R LinLibertine_R otf
+ .ft R
+ Here is some text in Linux Libertine Regular.
+ Here is some text in Linux Libertine Regular.
+
+ But it is also possible to have differ‐
+ ent names for the metrics and glyph data
+ files, as in
+
+ .fp 0 R mykerning.afm somefont.pfb
+ .ft R
+ This text prints in somefont using modified kerning.
+ This text prints in somefont using modified kerning.
+
+ The default higher‐resolution ‘‘ps’’
+ PostScript device always uses AFM files;
+ it supports the conventional ‘‘.fp’’ re‐
+ quest for backwards compatibility to se‐
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ lect pre‐installed fonts from the PDF
+ base set.
+ With fonts selected by this method, lo‐
+ calized input processing is performed ac‐
+ cording to the LC_CTYPE environment vari‐
+ able, or according to a document‐specific
+ value set by the ‘‘.lc_ctype’’ request:
+
+ . Enable long request names.
+ .do xflag 3
+ . de_DE.utf8 is for GNU libc; de_DE.UTF‐8 works elsewhere.
+ .lc_ctype de_DE.utf8
+ Deutscher Text mit ‹Anführungszeichen›
+ Deutscher Text mit ‹Anführungszeichen›
+ .sp
+ The first five small letters of the Greek alphabet: α β γ δ ε
+ The first five small letters of the Greek alphabet: α β γ δ ε
+
+ Note that any use of AFM, OpenType, or
+ TrueType files requires that the output
+ of _t_r_o_f_f is passed to the exactly match‐
+ ing version of _d_p_o_s_t, i.e. to the one
+ that was delivered with the same release
+ of this package. Sending such _t_r_o_f_f out‐
+ put directly to a print spooler that in‐
+ vokes a system version of _d_p_o_s_t will thus
+ usually not work.
+ The historical method requires font ta‐
+ bles to be generated manually. It is
+ still supported, and is still the default
+ for the lower‐resolution ‘‘post’’ Post‐
+ Script device, but it is not recommend‐
+ ed anymore that it is used for adding
+ fonts. Localized input processing accord‐
+ ing to LC_CTYPE is not available with
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this method.
+
+
+ _I_n_s_t_a_l_l_i_n_g _P_o_s_t_S_c_r_i_p_t _T_y_p_e _1 _f_o_n_t_s
+
+ Making additional fonts available is
+ easy with the current method. If you buy
+ a PostScript Type 1 font for use with
+ _t_r_o_f_f, select the Windows version. You
+ will get a set of files from the ven‐
+ dor. Only two of them are of interest for
+ _t_r_o_f_f:
+
+ xxxxxxxx.afm
+ This is the metrics file. _t_r_o_f_f ac‐
+ cesses it to learn the widths of char‐
+ acters in the font.
+
+ xxxxxxxx.pfb
+ This file contains the actual glyph
+ data. _t_r_o_f_f does not really need this
+ file, but the printer or PDF converter
+ does. In many cases, it is most con‐
+ venient to include the data directly
+ into the .ps file generated, as in the
+ examples above.
+
+ Create a directory to hold your fonts.
+ For compatibility with future ver‐
+ sions of _t_r_o_f_f, it is recommended that
+ it is put outside the _t_r_o_f_f hierar‐
+ chy /usr/ucblib/doctools; something be‐
+ low /usr/local may be a good choice.
+ For each font you want to install, copy
+ or link both the AFM and the PFB file
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ into the directory. Set the TROFFONTS
+ environment variable to this directory;
+ if you have multiple font directories,
+ you can separate them in TROFFONTS by
+ colons, just as in the PATH variable for
+ the shell, e.g. ‘‘TROFFONTS=/usr/local/
+ share/fonts:/usr/share/fonts export TROF‐
+ FONTS’’. Write the definition in your
+ ‘‘.profile’’ or a similar startup file to
+ make it permanent. You can now use the
+ fonts with _t_r_o_f_f. If you want to install
+ more fonts later, it is sufficient to put
+ them into the font directory.
+
+
+ _I_n_s_t_a_l_l_i_n_g _O_p_e_n_T_y_p_e _o_r _T_r_u_e_T_y_p_e _f_o_n_t_s
+
+ The procedure for OpenType and True‐
+ Type fonts is nearly the same as for
+ Type 1 fonts, except that there is only
+ one file ‘‘FontName.otf’’ (or ‘‘Font‐
+ Name.ttf’’) with them that contains both
+ metrics and glyph data. Just copy this
+ file to a directory given in the TROF‐
+ FONTS path.
+
+
+ _U_s_i_n_g _O_p_e_n_T_y_p_e _f_e_a_t_u_r_e_s
+
+ High‐quality OpenType fonts may contain
+ feature tables that allow special typo‐
+ graphic effects. For example, the Lin‐
+ ux Libertine font contains superscripts
+ characters that can be accessed with the
+ ‘‘.feature’’ request in _t_r_o_f_f:
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .do xflag 3
+ .fp 1 R LinLibertine_R otf
+ .fp 0 U LinLibertine_R otf
+ .feature U +sups
+ .ft R
+ Regular text which ends with\fUsuperscript\fR.
+ Regular text which ends withsuperscript.
+
+ To retrieve a list of features in an
+ individual font that are available with
+ _t_r_o_f_f, use ‘‘otf_info s font.otf’’. Typi‐
+ cal useful features are:
+
+ +c2sc converts capitals to small capitals
+ +case substitutions for use in combination with
+ text in all‐capital letters
+ +onum old‐style numerals
+ +pnum proportional (lining) numerals
+ +pnum +onum proportional old‐style numerals
+ +smcp converts lower‐case letters to small capitals
+ +smcp +c2sc converts all letters to small capitals
+ +titl titling characters
+ +sups superscript
+ +infs subscript
+ +zero slashed zero
+
+ Features such as ‘‘aalt’’ or ‘‘ornm’’
+ which only map sets of very special char‐
+ acters to different positions are nor‐
+ mally not useful with _t_r_o_f_f since these
+ characters can be accessed directly us‐
+ ing ‘‘[name]’’ escape sequences anyway.
+ To make an individual alternate character
+ the default, the ‘‘.ftr’’ request can be
+ used:
+
+
+ 5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ._d_o _x_f_l_a_g _3
+ ._f_p _0 _R _L_i_n_L_i_b_e_r_t_i_n_e__R _o_t_f
+ ._f_t_r _R _h\[_h._a_l_t]
+ ._f_t _R
+ _U_s_i_n_g _a_l_t_e_r_n_a_t_e _c_h_a_r_a_c_t_e_r _i_n _t_h_e _w_o_r_d ‘‘_h_e_l_l_o.’’
+ Using alternate character in the word ‘‘ello.’’
+
+ Feature mappings result in changes to
+ the same internal data structures as
+ the ‘‘.ftr’’ request. It is thus pos‐
+ sible to make adjustments to mappings
+ by using ‘‘.ftr’’ after ‘‘.feature’’, or
+ to create personalized variants by using
+ ‘‘.ftr’’ based on the data obtained from
+ ‘‘otf_info s’’.
+ The ‘‘.feature’’ request must still be
+ active for a font when a character is
+ printed; disabling a feature with ‘‘.fea‐
+ ture F feat’’ only works completely if
+ all of its mappings are still in posi‐
+ tion. It is thus recommended that the
+ ‘‘.feature’’ request is used only once
+ for a font immediately after it has been
+ mounted, and that a font is mounted mul‐
+ tiple times, each time for enabling an
+ individual feature set. Doing so has the
+ additional advantage that switching be‐
+ tween features is conveniently possible
+ using the ‘‘f’’ escape sequence.
+
+
+ _U_s_i_n_g _f_o_n_t_s _w_i_t_h _o_l_d‐_s_t_y_l_e _n_u_m_e_r_a_l_s
+
+ A Type 1 font with old‐style numerals
+ but otherwise standard characters usually
+
+
+ 6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ does not require any special mechanism.
+ It can simply be mounted, selected, and
+ used.
+ Old‐style numerals contained in OpenType
+ fonts can be accessed conveniently by
+ mapping them to the standard ASCII num‐
+ bers with the ‘‘.feature’’ request:
+
+ .do xflag 3
+ .fp 1 R LinLibertine_R otf
+ .feature R +onum
+ The numerals 0 1 2 3 4 5 6 7 8 9 are in old‐style.
+ The numerals 0 1 2 3 4 5 6 7 8 9 are in old‐style.
+
+
+ _U_s_i_n_g _f_o_n_t_s _w_i_t_h _s_m_a_l_l _c_a_p_i_t_a_l _l_e_t_t_e_r_s
+
+ Small capital fonts sometimes need let‐
+ ter space tracking. Thus e.g. to use the
+ Linux Libertine small capital font, you
+ can write something like
+
+ .do xflag 3
+ .fp 0 SC LinLibertine_R otf
+ .feature SC +smcp
+ .track SC 1 1.2 40 0
+ .ft SC
+ This text prints in Small Capitals.
+ This text prints in Small Capitals.
+
+
+ _U_s_i_n_g _a _c_o_m_b_i_n_a_t_i_o_n _o_f _e_x_p_e_r_t _a_n_d _s_t_a_n_‐
+ _d_a_r_d _f_o_n_t_s _f_o_r _s_m_a_l_l _c_a_p_i_t_a_l_s
+
+ A Type 1 expert font contains small cap‐
+
+
+ 7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ital letters but no upper‐case capital
+ letters. Since it would be very inconve‐
+ nient to change the font explicitly for
+ each upper‐case letter, the fallback se‐
+ quence is useful in this case. The ex‐
+ pert font is selected as text font, but
+ for each upper‐case letter encountered,
+ _t_r_o_f_f changes automatically to the stan‐
+ dard font:
+
+ .do xflag 3
+ .fp 1 R normalfont pfb
+ .fp 0 E expertfont pfb
+ .track E 1 .2 24 2
+ .fallback E R
+ .ft E
+ This text prints in Small Capitals.
+ This text prints in Small Capitals.
+
+ For OpenType fonts, all small capital
+ letters are contained within the base
+ font, and the ‘‘smcp’’ feature accesses
+ them as shown above.
+
+
+ _U_s_i_n_g _a _c_o_m_b_i_n_a_t_i_o_n _o_f _e_x_p_e_r_t _a_n_d _s_t_a_n_‐
+ _d_a_r_d _f_o_n_t_s _f_o_r _o_l_d‐_s_t_y_l_e _n_u_m_e_r_a_l_s
+
+ This also uses the fallback sequence,
+ but since the standard numerals are
+ present in the standard font, they have
+ to be hidden first so that _t_r_o_f_f does not
+ select them:
+
+ .do xflag 3
+
+
+ 8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .fp 1 R normalfont pfb
+ .fp 0 E expertfont pfb
+ .fallback R E
+ .hidechar R 0123456789
+ .ft R
+ The numerals 0 1 2 3 4 5 6 7 8 9 are in old‐style.
+ The numerals 0 1 2 3 4 5 6 7 8 9 are in old‐style.
+
+
+ _U_s_i_n_g _t_h_e _e_x_p_e_r_t _f_o_n_t _f_o_r _b_o_t_h _s_m_a_l_l _c_a_p_‐
+ _i_t_a_l_s _a_n_d _o_l_d‐_s_t_y_l_e _n_u_m_e_r_a_l_s
+
+ The examples above can also be combined.
+ Since the ‘‘.track’’ request does not af‐
+ fect the tracking of fonts that are se‐
+ lected by the fallback sequence, it is
+ sufficient to mount each font once:
+
+ .do xflag 3
+ .fp 1 R normalfont pfb
+ .fp 0 E expertfont pfb
+ .fallback R E
+ .fallback E R
+ .track E 1 .2 24 2
+ .hidechar R 0123456789
+ .ft R
+ The numerals 0 1 2 3 4 5 6 7 8 9 are in old‐style.
+ The numerals 0 1 2 3 4 5 6 7 8 9 are in old‐style.
+ .br
+ .ft E
+ But this text prints in Small Capitals.
+ But this text prints in Small Capitals.
+
+
+
+
+
+ 9
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ _U_s_i_n_g _t_h_e _e_x_p_e_r_t _f_o_n_t _f_o_r _l_i_g_a_t_u_r_e_s
+
+ PostScript Type 1 fonts usually do not
+ contain ligatures for ff, ffi, and ffl
+ in the base font; an expert font deliv‐
+ ers them in addition. Automatic substitu‐
+ tion of such ligatures can be enabled us‐
+ ing the ‘‘.flig’’ request in combination
+ with the fallback sequence:
+
+ .do xflag 3
+ .fp 1 R normalfont pfb
+ .fp 0 E expertfont pfb
+ .fallback R E
+ .flig R ff \(ff ffi \(Fi ffl \(Fl
+ .ft R
+ effective office offline
+ eective ofice ofline
+
+ OpenType fonts contain all available
+ ligatures in the base font, so no special
+ procedure needs to be applied with them.
+
+
+ _D_e_f_i_n_i_n_g _a_d_d_i_t_i_o_n_a_l _l_i_g_a_t_u_r_e_s
+
+ Fonts may provide ligatures beyond the
+ five standard _t_r_o_f_f ones. They are not
+ activated by default regardless of any
+ definitions in the font metrics files,
+ but can be enabled individually as de‐
+ sired; _t_r_o_f_f will then replace sequences
+ of characters automatically with them as
+ with the standard ligatures. For exam‐
+ ple, Linux Libertine contains ligatures
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ for use with the historic ‘‘’’ letter
+ variant:
+
+ .do xflag 3
+ .fp 1 R LinLibertine_R otf
+ .flig R \[longs]\[longs] \[longs_longs] \[longs]i \[longs_i]
+ .flig R \[longs]\[longs]i \[longs_longs_i]
+ U\[longs]e the\[longs]e ligatures
+ for cla\[longs]\[longs]ic typography.
+ Ue thee ligatures for clac typography.
+
+ _t_r_o_f_f splits ligatures in two parts when
+ hyphenating words. It is thus necessary
+ that any part of a ligature that is not
+ a single character is also defined as a
+ ligature, so ‘‘’’ and ‘‘’’ are prerequi‐
+ sites for ‘‘’’.
+ It is normally not advisable to en‐
+ able ligatures with special display
+ forms (such as in ‘‘seion’’) using
+ the ‘‘.flig’’ mechanism; they should
+ be set manually as special characters
+ (‘‘\[c_t]’’ in this case) at precise lo‐
+ cations.
+
+
+ _C_h_o_o_s_i_n_g _b_e_t_w_e_e_n _m_u_l_t_i_p_l_e _p_o_s_s_i_b_l_e _l_i_g_a_‐
+ _t_u_r_e_s
+
+ If a font contains only two‐charac‐
+ ter ligatures, there are two possibil‐
+ ities for automatic ligature building
+ with an input sequence that would form
+ a three‐character ligature, e.g., ‘‘ffi’’
+ could be constructed as ‘‘i’’ or ‘‘ffi’’.
+
+
+ 11
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ _t_r_o_f_f normally selects the first ligature
+ available, so ‘‘i’’ would be the default.
+ In many cases, the other choice would be
+ aesthetically preferable; this is the ap‐
+ plication for the ‘‘.fdeferlig’’ request:
+
+ .do xflag 3
+ .fp 1 R LinLibertine_R otf
+ .flig R \[longs]\[longs] \[longs_longs] \[longs]i \[longs_i]
+ .fdeferlig R \[longs]\[longs]i
+ Choo\[longs]ing the \[longs]econd ligature looks po\[longs]\[longs]ibly better.
+ Choong the econd ligature looks pobly better.
+
+
+ _C_o_m_b_i_n_i_n_g _d_i_f_f_e_r_e_n_t _f_o_n_t_s
+
+ Different fonts often have different vi‐
+ sual sizes even if they are set in the
+ same nominal point size. Also fonts from
+ different vendors are often based on dif‐
+ ferent standards for character heights.
+ To adjust this, the ‘‘.fzoom’’ request
+ is available. As implied by this pur‐
+ pose, it only applies to characters that
+ are actually in the current font, not to
+ characters from another font that have
+ been selected using the fallback se‐
+ quence.
+
+ .do xflag 3
+ .fp 1 R LinLibertine_R otf
+ .fp 0 M LinLibertine_M otf
+ .track M 1 ‐.1 40 ‐0
+ .fzoom M .8
+ \fMLibertine Monospace\fR must be adjusted to fit with Roman.
+
+
+ 12
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Libertine Monospace must be adjusted to fit with Roman.
+
+ The ‘‘.fzoom’’ request affects all char‐
+ acters set in the respective font on the
+ current output line. To create single
+ zoomed words, mount a font twice under
+ different names, but zoom it only once.
+
+
+ _S_p_a_c_i_n_g _o_u_t _i_n_d_i_v_i_d_u_a_l _w_o_r_d_s
+
+ Spacing out the characters of individ‐
+ ual words is commonly done for high‐
+ lighting text e.g. with German blacklet‐
+ ter faces; the ‘‘.track’’ request can be
+ used for this as well. Like ‘‘.fzoom’’,
+ ‘‘.track’’ applies to all characters in
+ the respective font on an entire output
+ line. Thus it is also necessary to mount
+ a font twice but to track it only once
+ when it is used for tracking individual
+ words.
+
+
+ _S_e_t_t_i_n_g _t_e_x_t _i_n _a_l_l‐_c_a_p_i_t_a_l _l_e_t_t_e_r_s
+
+ When setting text in all‐capital let‐
+ ters, it is normally necessary to zoom
+ the font to a smaller size than that of
+ the lower‐case text surrounding it, and
+ to track it as well. Mounting the regular
+ font a second time is the most convenient
+ way to handle this:
+
+ .do xflag 3
+
+
+ 13
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .fp 1 R LinLibertine_R otf
+ .fp 0 C LinLibertine_R otf
+ .track C 1 1.2 40 0
+ fzoom C .9
+ Regular text and \fCALL‐CAPITAL TEXT\fR which ends.
+ Regular text and ALL‐CAPITAL TEXT which ends.
+
+
+ _P_a_i_r_w_i_s_e _k_e_r_n_i_n_g
+
+ Pairwise kerning is enabled unless the
+ x0 option is given. The ‘‘.kern’’ request
+ disables it. Kerning tables are initially
+ read from the AFM, OpenType, or TrueType
+ files; this default kerning only applies
+ if two adjacent characters are from the
+ same font. A font‐specific kerning table
+ can be disabled using the ‘‘.fkern’’ re‐
+ quest.
+ There are two methods to adjust the
+ kerning tables: In some cases, it is most
+ convenient to create a private copy of
+ the AFM file and to adjust the ‘‘KPX’’
+ entries in it. This has the advantage
+ that the modified kerning pairs are imme‐
+ diately available for use in other docu‐
+ ments.
+ For OpenType or TrueType fonts, or for
+ cases where this is not suitable with
+ Type 1 fonts, or not possible because the
+ characters in the kerning pair originate
+ from different fonts, _t_r_o_f_f provides the
+ ‘‘.kernpair’’ request:
+
+ .do xflag 3
+
+
+ 14
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .fp 1 R LinLibertine_R otf
+ .feature R +onum
+ .kernpair R 0 R / 50
+ .kernpair R / R 1 90
+ .kernpair R 1 R / 40
+ .kernpair R / R 2 80
+ 0/1/2
+ 0/1/2
+
+ In this example, old‐style numerals from
+ Linux Libertine are mixed with the slash
+ character, and are adjusted to achieve
+ matching visual letter spacing.
+
+
+ _K_e_r_n_i_n_g _o_f _a _c_h_a_r_a_c_t_e_r _i_n _a_n_y _c_o_m_b_i_n_a_t_i_o_n
+
+ It is sometimes useful to add a cer‐
+ tain amount of space whenever a charac‐
+ ter appears, for example before ‘‘;’’ or
+ ‘‘?’’, or on the inner sides of guille‐
+ mots in French/Swiss style. The ‘‘.ker‐
+ nafter’’ and ‘‘.kernbefore’’ requests are
+ useful for this:
+
+ .do xflag 3
+ .kernafter R ; 66 ? 66
+
+ If the characters affected by these re‐
+ quests are also member of a regular kern‐
+ ing pair, the resulting added space is
+ the sum of both definitions. These re‐
+ quests are applied at the same places as
+ kerning pairs, i.e. they have no effect
+ if following or preceding a motion com‐
+
+
+ 15
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mand, ‘‘’’ or line margin, and they are
+ additionally restricted to have no effect
+ if the other character is a space.
+
+
+ _H_a_n_g_i_n_g _c_h_a_r_a_c_t_e_r_s
+
+ Since there are no tables for hang‐
+ ing characters in AFM files, values must
+ be given explicitly in _t_r_o_f_f source code
+ using the ‘‘.lhang’’ and ‘‘.rhang’’ re‐
+ quests. Both accept a font specification
+ followed by one or more pairs of charac‐
+ ters and values:
+
+ .do xflag 3
+ .ps 10
+ .fp 1 R somefont pfb
+ .lhang R V 50 J 40
+ .rhang R (hy 80
+
+ Adjustments are given in units of
+ 1/72000 inch multiplied by the actual
+ point size, or 1/1000 of the em size when
+ the line is printed. Thus in this exam‐
+ ple, the left margin is shifted to the
+ left by .5 points when the leftmost let‐
+ ter is a ‘‘V’’, and by .4 points when
+ the leftmost letter is a ‘‘J’’; the right
+ margin is shifted to the right by .8
+ points when the rightmost letter is a hy‐
+ phen.
+ Left margin adjustments are evaluated
+ before the letters that fit on the cur‐
+ rent line are computed, and can thus
+
+
+ 16
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ principally be of any length. In con‐
+ trast, right margin adjustments are eval‐
+ uated after this computation is finished,
+ and the adjustment is simply added to the
+ word space of the output line. Thus a
+ positive right adjustment that is large
+ in relation to the line length will cause
+ visible holes, and a negative adjustment
+ will ultimately cause the words on the
+ line to be printed over each other. This
+ is not a problem for the typical ap‐
+ plication of hanging punctuation for vi‐
+ sual alignment, though; if a line with
+ eight word spaces is shifted in the exam‐
+ ple above, each word space is enlarged by
+ only 1/100 em.
+
+
+ _M_a_t_h_e_m_a_t_i_c_a_l _a_n_d _o_t_h_e_r _s_p_e_c_i_a_l _c_h_a_r_a_c_t_e_r_s
+
+ Special mathematical characters like
+ ‘‘(’’, greek letters like ‘‘(*a’’, and,
+ with the ‘‘pslow’’ device, even the punc‐
+ tuation characters (or ` ´ # < > @
+ are normally not chosen from the current
+ font, but are taken from the special font
+ instead. (PostScript names (e.g. ‘‘[num‐
+ bersign]’’, ‘‘[less]’’, ‘‘[at]’’) access
+ characters from the current font.) The
+ ‘‘.fps’’ request can be used to over‐
+ ride this behavior. In particular, this
+ is useful to set mathematical text with
+ a different font. To use Linux Libertine
+ for greek letters and mathematical sym‐
+ bols:
+
+
+ 17
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .do xflag 3
+ .fps math,greek,punct,large 1 R LinLibertine_R otf
+ .fp 2 I LinLibertine_RI otf
+ .fallback I R
+ .EQ
+ a = pi {r sup 2}
+ .EN
+
+
+ _H_e_l_p_e_r _u_t_i_l_i_t_i_e_s
+
+ The _o_t_f__i_n_f_o utility shows the contents
+ of an OpenType or TrueType font file just
+ as _t_r_o_f_f interprets it. It emits an ASCII
+ format that is readable by humans and can
+ also be used for further processing with
+ shell scripts. It is useful to retrieve
+ lists of characters and features support‐
+ ed with the font.
+ The shell script ‘‘stuff/showfont.sh’’
+ in the source code distribution uses
+ _t_r_o_f_f and possibly _o_t_f__i_n_f_o to print a
+ map of all characters in an AFM, Open‐
+ Type, or TrueType font along with their
+ PostScript names.
+
+
+ _L_i_m_i_t_a_t_i_o_n_s
+
+ _d_p_o_s_t uses a method to embed CFF‐
+ based (PostScript‐style) OpenType fonts
+ in PostScript documents that is only
+ available with PostScript 3 interpreters;
+ older printing equipment that uses Post‐
+ Script Level 2 or below cannot handle
+
+
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ such documents directly. The recommended
+ workaround is to convert the PostScript
+ output to a PDF document and to print it
+ using a PDF viewer or reverse conversion
+ program. Also you may have to update
+ your copy of Ghostscript in order to cre‐
+ ate PDF files with proper font embedding
+ from such output.
+ Embedding TrueType fonts in PostScript
+ documents requires PostScript 3 or Post‐
+ Script Level 2 of at least version 2013.
+ _t_r_o_f_f only supports OpenType features
+ that result in single‐character substitu‐
+ tions insensitive of context (except for
+ the ‘‘fi fl ff ffi ffl’’ ligatures and
+ kerning which are enabled by default if
+ possible). Also _t_r_o_f_f ignores any fea‐
+ tures that are not mapped to the ‘‘DFLT’’
+ or ‘‘latn’’ languages in an OpenType
+ font.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 19
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/fonts/doc.ps b/doc/fonts/doc.ps
new file mode 100644
index 000000000000..98e66ec51643
--- /dev/null
+++ b/doc/fonts/doc.ps
@@ -0,0 +1,44884 @@
+%!PS-Adobe-3.0
+%%Creator: Heirloom Documentation Tools - dpost 8.77 (gritter) 6/19/11
+%%
+%%LanguageLevel: 3
+%%DocumentFonts: LinLibertineO LinLibertineDisplayO LinLibertineOI
+%%+ LinLibertineMO Symbol
+%%Pages: 18
+%%DocumentMedia: x420y595 420 595 0 () ()
+%%DocumentNeededResources: procset FontSetInit 0 0
+%%+ font Symbol
+%%DocumentSuppliedResources: font LinLibertineO
+%%+ font LinLibertineDisplayO
+%%+ font LinLibertineOI
+%%+ font LinLibertineMO
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset dpost 4.19 0
+%
+% Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+% Use is subject to license terms.
+%
+% CDDL HEADER START
+%
+% The contents of this file are subject to the terms of the
+% Common Development and Distribution License, Version 1.0 only
+% (the "License"). You may not use this file except in compliance
+% with the License.
+%
+% You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+% or http://www.opensolaris.org/os/licensing.
+% See the License for the specific language governing permissions
+% and limitations under the License.
+%
+% When distributing Covered Code, include this CDDL HEADER in each
+% file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+% If applicable, add the following below this CDDL HEADER, with the
+% fields enclosed by brackets "[]" replaced with your own identifying
+% information: Portions Copyright [yyyy] [name of copyright owner]
+%
+% CDDL HEADER END
+%
+% from OpenSolaris "dpost.ps 1.7 05/06/08 SMI"
+%
+% Portions Copyright 2005 Gunnar Ritter, Freiburg i. Br, Germany
+%
+% Sccsid @(#)dpost.ps 4.19 (gritter) 2/7/10
+%
+
+/#copies 1 store
+/aspectratio 1 def
+/formsperpage 1 def
+/landscape false def
+/linewidth .3 def
+/magnification 1 def
+/margin 0 def
+/orientation 0 def
+/resolution 720 def
+/xoffset 0 def
+/yoffset 0 def
+
+/roundpage true def
+/useclippath true def
+/pagebbox [0 0 612 792] def
+
+/R /Times-Roman def
+/I /Times-Italic def
+/B /Times-Bold def
+/BI /Times-BoldItalic def
+/H /Helvetica def
+/HI /Helvetica-Oblique def
+/HB /Helvetica-Bold def
+/HX /Helvetica-BoldOblique def
+/CW /Courier def
+/CO /Courier def
+/CI /Courier-Oblique def
+/CB /Courier-Bold def
+/CX /Courier-BoldOblique def
+/PA /Palatino-Roman def
+/PI /Palatino-Italic def
+/PB /Palatino-Bold def
+/PX /Palatino-BoldItalic def
+/Hr /Helvetica-Narrow def
+/Hi /Helvetica-Narrow-Oblique def
+/Hb /Helvetica-Narrow-Bold def
+/Hx /Helvetica-Narrow-BoldOblique def
+/KR /Bookman-Light def
+/KI /Bookman-LightItalic def
+/KB /Bookman-Demi def
+/KX /Bookman-DemiItalic def
+/AR /AvantGarde-Book def
+/AI /AvantGarde-BookOblique def
+/AB /AvantGarde-Demi def
+/AX /AvantGarde-DemiOblique def
+/NR /NewCenturySchlbk-Roman def
+/NI /NewCenturySchlbk-Italic def
+/NB /NewCenturySchlbk-Bold def
+/NX /NewCenturySchlbk-BoldItalic def
+/ZD /ZapfDingbats def
+/ZI /ZapfChancery-MediumItalic def
+/VR /Varitimes#Roman def
+/VI /Varitimes#Italic def
+/VB /Varitimes#Bold def
+/VX /Varitimes#BoldItalic def
+/S /S def
+/S1 /S1 def
+/GR /Symbol def
+
+/inch {72 mul} bind def
+/min {2 copy gt {exch} if pop} bind def
+
+/track 0 def
+/horscale 1.0 def
+
+/setup {
+ counttomark 2 idiv {def} repeat pop
+
+ landscape {/orientation 90 orientation add def} if
+ /scaling 72 resolution div def
+ linewidth setlinewidth
+ 1 setlinecap
+
+ pagedimensions
+ xcenter ycenter translate
+ orientation neg rotate
+ width 2 div neg height 2 div translate
+ xoffset inch yoffset inch translate
+ margin 2 div dup neg translate
+ magnification dup aspectratio mul scale
+ scaling scaling scale
+
+ /Symbol /S Sdefs cf
+ /Times-Roman /S1 S1defs cf
+ 0 0 moveto
+} def
+
+/pagedimensions {
+ useclippath userdict /gotpagebbox known not and {
+ /pagebbox [clippath pathbbox newpath] def
+ roundpage currentdict /roundpagebbox known and {roundpagebbox} if
+ } if
+ pagebbox aload pop
+ 4 -1 roll exch 4 1 roll 4 copy
+ landscape {4 2 roll} if
+ sub /width exch def
+ sub /height exch def
+ add 2 div /xcenter exch def
+ add 2 div /ycenter exch def
+ userdict /gotpagebbox true put
+} def
+
+/pagesetup {
+ /page exch def
+ currentdict /pagedict known currentdict page known and {
+ page load pagedict exch get cvx exec
+ } if
+ /Dsetup where {pop Dsetup} if
+ _custompagesetup
+} def
+
+/decodingdefs [
+ {counttomark 2 idiv {y moveto track 0 3 -1 roll ashow} repeat}
+ {neg /y exch def counttomark 2 idiv {y moveto track 0 3 -1 roll ashow} repeat}
+ {neg dup /y exch def moveto {2 index dup length track mul exch stringwidth pop add sub exch div 0 32 track 0 6 -1 roll awidthshow} repeat}
+ {neg dup /y exch def moveto {spacewidth sub track sub 0.0 32 track 0 6 -1 roll awidthshow} repeat}
+ {/x exch def counttomark 2 idiv 1 add {x y moveto counttomark 1 gt {x exch sub /x exch def} if track 0 3 -1 roll ashow} repeat}
+ {/x exch def counttomark 2 idiv 1 add {x y moveto counttomark 1 gt {x exch sub /x exch def} if track 0 3 -1 roll ashow} repeat}
+ {counttomark 2 idiv {y moveto track 0 3 -1 roll ashow} repeat}
+ {neg setfunnytext}
+] def
+
+/setdecoding {/t decodingdefs 3 -1 roll get def} bind def
+
+/T {/track exch def} bind def
+
+/w {neg dup /y exch def moveto track 0 3 -1 roll ashow} bind def
+/v {y moveto track 0 3 -1 roll ashow} bind def
+/u {y neg t} bind def
+/m {neg dup /y exch def moveto} bind def
+/done {/lastpage where {pop lastpage} if} def
+
+/f {
+ dup /font exch def exch
+ dup /ptsize exch def scaling div dup /size exch def
+ horscale 1.0 ne {horscale mul [exch 0 0 size 0 0]} if SF
+ linewidth ptsize mul scaling 10 mul div setlinewidth
+ /spacewidth ( ) stringwidth pop def
+ /horscale 1.0 def
+} bind def
+/F {ptsize exch f} bind def
+/s {font f} bind def
+/h {/horscale exch def f} bind def
+
+/changefont {
+ /fontheight exch def
+ /fontslant exch def
+ currentfont [
+ 1 0
+ fontheight ptsize div fontslant sin mul fontslant cos div
+ fontheight ptsize div
+ 0 0
+ ] makefont setfont
+} bind def
+
+/sf {f} bind def
+
+/cf {
+ dup length 2 idiv
+ /entries exch def
+ /chtab exch def
+ /newfont exch def
+
+ findfont dup length 1 add dict
+ /newdict exch def
+ {1 index /FID ne {newdict 3 1 roll put} {pop pop} ifelse} forall
+
+ newdict /Metrics entries dict put
+ newdict /Metrics get
+ begin
+ chtab aload pop
+ 1 1 entries {pop def} for
+ newfont newdict definefont pop
+ end
+} bind def
+
+%
+% A few arrays used to adjust reference points and character widths in some
+% of the printer resident fonts. If square roots are too high try changing
+% the lines describing /radical and /radicalex to,
+%
+% /radical [0 -75 550 0]
+% /radicalex [-50 -75 500 0]
+%
+
+/Sdefs [
+ /underscore [0 0 500 0]
+ /bracketlefttp [208 500]
+ /bracketleftbt [208 500]
+ /bracketrighttp [-60 380]
+ /bracketrightbt [-60 380]
+ /braceleftbt [209 490]
+ /bracketrightex [220 -125 500 0]
+ /radical [0 0 550 0]
+ % NeWSprint's \(br is too low, compensate
+ statusdict /product get (NeWS Server) eq {
+ /radicalex [-50 100 500 0]
+ /parenleftex [-20 100 0 0]
+
+ } {
+ /radicalex [-50 0 500.001 0]
+ /parenleftex [-20 -170 0 0]
+ } ifelse
+ /integral [100 -50 500 0]
+ /infinity [10 -75 730 0]
+] def
+
+%
+% This adjusts the y left bearing of the underscore character in the
+% Symbol font to the position expected by troff, depending on the
+% font variant actually in use with the current document.
+%
+/_Sdefsadj {
+ gsave
+ /Symbol findfont 1000 scalefont setfont
+ 0 0 moveto
+ (\137) false charpath flattenpath pathbbox pop pop exch pop
+ grestore
+ 252 add neg
+ Sdefs 1 [0 5 -1 roll 500 0] put
+} def
+
+/S1defs [
+ /underscore [0 80 500.001 0]
+ /endash [7 90 650 0]
+] def
+
+% from Adobe's PostScript Language Reference Manual, 2nd ed. 1990, pp. 588-589
+/*SF { % Complete selectfont emulation
+ exch findfont exch
+ dup type /arraytype eq {makefont}{scalefont} ifelse setfont
+} bind def
+/languagelevel where % Determine language level
+ {pop languagelevel} {1} ifelse % of implementation
+ 2 lt { % ifelse
+ /SF /*SF load def % Level 1 interpreter present, so
+ } { % else
+ /SF /selectfont load def% Level 2 interpreter present, so
+ }
+ifelse
+
+% from Adobe's pdfmark Reference Manual for Acrobat 7.0, 11/30/04, p. 10
+/pdfmark where % Is pdfmark already available?
+ {pop} % Yes: do nothing (use that definition)
+ { % No: define pdfmark as follows:
+ /globaldict where % globaldict is preferred because
+ {pop globaldict} % globaldict is always visible; else,
+ {userdict} % use userdict otherwise.
+ ifelse
+ /pdfmark /cleartomark load put
+ } % Define pdfmark to remove all objects
+ifelse % up to and including the mark object.
+%%EndResource
+%%IncludeResource: procset FontSetInit 0 0
+%%BeginResource: font LinLibertineO
+/FontSetInit /ProcSet findresource begin
+/LinLibertineO 483417 currentfile /ASCIIHexDecode filter cvx exec
+2053746172744461746120
+01000404000101010e4c696e4c6962657274696e654f000102000100411c0b11001c
+0b12011c0b13021c0b1403f81504290c03b30c04fecefb941c181bfaf9051d00005e
+9d0f1d00000000101d00007380111d000000441d00067eb012098e0200010008000f
+001b0029003000370043004a00510057005d0064006b007100770082008d009700a1
+00a700ad00b300b900bf00c500cc00d300d900df00e900f300fa01010107010d0118
+01230129012f01390143014f015b0166017101750179017f0185018c01930199019f
+01a601ad01b701b901bb01c601d101dd01e901f501fb0201020d0219021f02250229
+022d02330239024502510257025d0268026b026e0275027c02820288029502a202a8
+02ae02ba02c602cc02d202d802de02e902f402fc0304030c0314031a032003240328
+032e0334033b03420348034e035303580365037203790380038b039603a103ac03b2
+03b803c203cc03d103d803df03e603ed03f403fb0402040904100417041e0425042c
+0433043a04410448044f0456045d0464046b0472047904800487048e0495049c04a3
+04aa04af04b404bb04c204c904d004d704de04e504ec04f304fa05010508050f0514
+051905200527052e0535053c0543054a05510558055f0566056d0574057b05820589
+05900597059e05a505ac05b305ba05c105c805cf05d605dd05e405eb05f205f90600
+0607060e0615061c0623062a06310638063f0646064d0654065b0662066906700677
+067e0685068c06920698069f06a606ad06b406bb06c206c906d006d706de06e506ec
+06f306fa07010708070f07160720072a073107380743074e0755075c0763076a0771
+0778077f0786078d0794079b07a207a907b007b707be07c507cc07d307da07e107e8
+07ef07f60802080e081a0826082d0834083b0842084908500857085e0865086c0873
+087a08810888088f0896089d08a408ab08b208b908c008c708ce08d508dc08e308eb
+08f208f909000907090e0915091c0923092a09310938093f0946094d0954095b0962
+096909700977097e0985098c0993099a09a109a809af09b609bd09c409cb09d209d9
+09e009e709ee09f509fc0a030a0a0a110a180a220a290a300a350a3c0a430a4a0a51
+0a580a5f0a660a6d0a740a7b0a820a890a900a970a9e0aa50aac0ab30aba0ac10acc
+0ad30ada0ae10ae80af10aff0b060b0d0b140b1b0b220b290b300b370b3e0b450b4c
+0b530b5a0b610b680b6f0b760b7d0b840b970b9e0ba50bac0bb30bba0bc10bc80bcf
+0bd60bdd0be40beb0bf20bf90c000c070c0e0c150c1c0c230c2a0c310c380c3f0c46
+0c4d0c570c650c6f0c790c890c9d0cb40cbe0cc80ccf0cd60cdd0ce60cef0cf60cfd
+0d040d0b0d120d190d200d270d2e0d350d3c0d430d4a0d510d580d5f0d660d6d0d74
+0d7b0d820d890d900d970d9e0da50db80dc20dcc0dd60df20df90e000e070e0e0e15
+0e1c0e230e2a0e310e380e3f0e460e4d0e540e5b0e620e690e700e770e7e0e850e8c
+0e930e9a0ea10ea80eaf0eb80ec10ecf0ed80ee20ee90ef20ef90f000f0d0f140f1b
+0f220f290f300f370f3e0f450f4c0f530f5a0f610f680f6f0f760f7d0f840f8b0f92
+0f990fa00fa70fae0fb50fbc0fc80fcf0fd60fdd0fe40feb0ff20ff910001007100e
+1015101c1023102a10311038103f1046104d1054105b1062106910701077107e1085
+108c1093109a10a110a810af10b610bd10c410cb10d210d910e010e710ee10f510fc
+1103110a11111118111f1126112d1134113b1142114911501157115e1165116c1173
+117a11811188118f1196119d11a411ab11b211b911c011c711ce11d511dc11e311ea
+11f111f811ff1206120b12181222122b1237123f124812541260126a127b12801284
+1289128e12951299129c12a112a512aa12b012b212b412b612bd12bf12c212c712ca
+12d112d412d712da12df12eb12fa13041310131813211335133a133e13431348134f
+13531356135b135f1364136a136c136e13751377137a138013851388138f13921395
+1398139d13a913b813c413d013da13e113e713ef13f613fd14011407140e1415141c
+1423142a14311438143f1446144d1454145b1462146914701477147e1485148c1493
+149a14a114a814af14b614bf14c814d114da14e314ec14f514fe1507151015191522
+15291532153b1544154d1556155f15681571157a1583158c1595159e15a715b015b9
+15c215cb15d415dd15e615ef15f81601160a1613161c1625162e1637164016491652
+165b1664166d1676167f16881691169a16a316ac16b516be16c716d016d916e216eb
+16f416fd1706170f17181721172a1733173c1745174e1757176017691772177b1782
+178b1794179d17a617af17b817c117ca17d317dc17e517ee17f517fe1807180e1815
+181e1827182e1835183c1843184a18511858185f1866186d1874187b188218891892
+189b18a418ad18b418bb18c218c918d018d718de18e518ec18f318fa1903190c1913
+191a19211928192f1936193d1944194b1952195919601967196e1975197c1983198a
+19911998199f19a619ad19b419bb19c219c919d019d719de19e519ec19f319fa1a01
+1a081a0f1a161a1d1a241a2b1a321a391a401a471a4e1a551a5c1a631a6a1a711a78
+1a7f1a861a8d1a941a9b1aa21aa91ab01ab71abe1ac51acc1ad31ada1ae31aea1af1
+1af81aff1b061b0d1b141b1b1b221b291b301b371b3e1b451b4c1b531b5a1b611b68
+1b6f1b761b7d1b841b8b1b921b991ba01ba71bae1bb51bbc1bc31bcc1bd51bde1be7
+1bf01bf91c021c0b1c141c1d1c241c2d1c361c3f1c481c511c5a1c631c6c1c751c7c
+1c851c8e1c971ca01ca91cb21cbb1cc41ccd1cd61cdf1ce81cf11cfa1d031d0c1d15
+1d1e1d271d301d391d421d4b1d541d5d1d661d6f1d781d811d8a1d911d981d9f1da9
+1db91dc01dc71dd11ddb1de51df51dfc1e031e0d1e1d1e271e311e3d1e471e571e5e
+1e651e6f1e791e831e8a1e9a1ea41eab1eb21eb91ec01ec71ece1ed51edc1ee31eea
+1ef41efe1f081f0f1f161f1d1f241f2b1f321f391f401f471f4e1f551f5c1f631f6a
+1f711f781f7f1f861f8d1f941f9b1fa21fa91fb01fb71fbe1fc51fcc1fd31fda1fe1
+1fe81fef1ff61ffd2004200b2012201920202027202e2035203c2043204a20512058
+205f2066206d2074207b2082208920902097209e20a520ac20b320ba20c120c820cf
+20d620dd20e420eb20f220f921002107210e2115211c2123212a21312138213f2146
+214d2154215b2162216921702177217e2185218c2193219a21a121a821af21b621bd
+21c421cb21d221d921e021e721ee21f521fc2203220a22112218221f2226222d2234
+223b2242224922502257225e2265226c2273227a22812288228e2294229a22a022a9
+22b222b922c022c722ce22d522dc22e322ea22f122f822ff2306230d2314231b2322
+232923302337233e2345234c2353235a2364236b2372237923802387238e2395239c
+23a323aa23b123b823bf23c623cd23d423db23e223e923f023f723fe2405240c2413
+241a24212428242f2436243d2444244b2452245924602467246e2475247c2483248a
+24912498249f24a624ad24b424bb24c224c924d024d724de24e524ec24f324fa2501
+2508250f2516251d2524252b2532253925402547254e2555255c2563256a25712578
+257f2586258d2594259b25a225a925af25b525bc25c325ca25d125d825df25e625ed
+25f425fb2602260926102617261e2625262c2633263a26412648264f2656265d2664
+266b2672267926802687268e2695269c26a326aa26b126b826bf26c626cd26d426db
+26e226e926f026f726fe2705270c2713271a27212728272f2736273d2744274b2752
+275927602767276e2775277c2783278a27912798279f27a627ad27b427bb27c227c9
+27d027d727de27e527ec27f327fa28012808280f2816281d2824282b283228392840
+2847284e2855285c2863286a28712878287f2886288d2894289b28a228a928b028b7
+28be28c528cc28d328da28e128e828ef28f628fd2904290b2912291929202927292e
+2935293c2943294a29512958295f2966296d2974297b2982298929902997299e29a5
+29ac29b329ba29c129c829cf29d629dd29e429eb29f229f92a002a072a0e2a152a1c
+2a232a2a2a312a382a3f2a462a4d2a542a5b2a622a692a702a772a7e2a852a8c2a93
+2a9a2aa12aa82aaf2ab62abd2ac42acb2ad22ad92ae02ae72aee2af52afc2b032b0a
+2b112b182b1f2b262b2d2b342b3b2b422b492b502b572b5e2b652b6c2b732b7a2b81
+2b882b8f2b962b9d2ba42bab2bb22bb92bc02bc72bce2bd52bdc2be32bea2bf12bf8
+2bff2c062c0d2c142c1b2c222c292c302c372c3e2c452c4c2c532c5a2c612c682c6e
+2c742c7b2c822c912c9f2cac2cb72cc72cd02cd92ce72cf02cfd2d0a2d112d1e2d2b
+2d362d442d4d2d542d622d682d6e2d792d862d8d2d942d9b2da42daf2db62dbd2dce
+2ddd2dec2df32dfa2e012e0e2e182e252e322e3e2e4c2e5a2e672e742e822e902ea2
+2eb52ebf2ecc2ed82ee42ef22eff2f0c2f182f262f342f412f4e2f5c2f6a2f7c2f8f
+2f992fa32fad2fb72fbe2fc52fcc2fd32fda2fe12fe82fef2ff62ffd30023006300c
+30133017301b30223026302d3034303b3045304e3055305f3066306d3074307b3083
+308c3093309930a030a730af30b630bd30c430cb30d330dc30e130e830ef30f630fd
+3104310c31153120312a3132313c3148315031583162316b3174317c318631903199
+31a131ac31b731be31c531cc31d331db31e331ed31f631ff32073211321b3224322c
+32373242324932503257325e3265326c3273327a3281328a3291329b32a432ad32b6
+32bd32c432cb32d232d932e032e732f332fa33013308330f3316331d3324332b3332
+33393345334f335c33683374337b338233893390339733a033a733b233bd33c433cc
+33d333db33e233ec33f333fb340234093410341734203427342e3435343c3448344f
+3456345d3464346b3477347f3486348b3492349934a034a734ae34b534bf34c834d4
+34d934e134e834ef34f634fd3504350b3514351f3526352d3535354035473550355c
+3563356a35713578357f3586359235a035a935b035ba35c135cf35d635dd35e435eb
+35f835ff3606360d3614361b3622362936303637363e36493657365e3665366c3673
+367a36813688368f3696369d36a436ab36b236b936c036c736ce36d536dc36e336ea
+36f136f836ff3706370d371e3725372c3733373a37413748374f3756375d3764376b
+3772377937803787378e3795379c37a337aa37b137b837bf37c637cd37d437db37e2
+37e937f037f737fe3805380c3813381a38213828382f3836383d3844384b38523859
+38603867386e3875387c3883388a38913898389f38a638ad38b438bb38c238c938d0
+38d738de38e538ec38f338fa39013908390f3916391d3924392b3932393939403947
+394e3955395c3963396a39713978397f3986398d3994399b39a239a939b039b739be
+39c539cc39d339da39e139e839ef39f639fd3a043a0b3a123a193a203a273a2e3a35
+3a3c3a433a4a3a533a593a603a673a6e3a753a7c3a833a8a3a913a983a9f3aa63aad
+3ab63abd3ac33aca3ad13ad83adf3ae63aed3af43afb3b053b0c3b133b1a3b213b28
+3b2f3b363b3d3b443b4b3b523b593b603b673b6d3b743b783b7f3b863b8d3b943b9b
+3ba23ba93bb03bb73bbe3bc53bcc3bd33bda3be13be83bef3bf63bfd3c043c0b3c12
+3c1d3c2b3c323c393c403c473c4e3c553c5c3c633c6a3c713c783c7f3c863c8d3c95
+3c9c3ca33caa3cae3cb53cbc3cc33cca3cd13cd83cdf3ce63ced3cf43cfb3d023d09
+3d103d173d1e3d253d2c3d333d3a3d413d483d4f3d563d5d3d643d6b3d723d793d80
+3d873d8e3d953d9c3da33daa3db13db83dbf3dc63dcd3dd43ddb3de23de93df03df7
+3dfe3e053e0c3e0f3e163e1d3e243e2b3e323e393e403e473e4e3e553e5c3e643e70
+3e7f3e8f3e9a3ea43eae3eba3ec53ed03eda3ee63ef23efd3f083f123f193f1e3f25
+3f343f413f4d3f593f673f743f813f8d3f9b3fa93fb63fbd3fca3fd73fe43fe93fec
+3ff13ff63ffb4000400340064009400c400f401240154018401f402a40314038403f
+40464053405a40604067406a406d407040754083409240a040a740b440b840bc40c0
+40c440c840cc40d040d440d840dc40e040e440e840ec40f040f440f840fc41004104
+4108410c411041144118411c4123412c4135413e414c415541614169416e41794182
+418b419941a541ae41b741c541d141d741e041e941f2420042094215421a4223422c
+42354243424f42584260426c42714281428e4294429d42a642af42b942c242cb42d4
+42de42e742f042f94302430b4314431a432a4333433c4345435043594364436b4373
+4383438c439943a243ab43b443c343d243df43eb43f243fc440a4418442b44394448
+444f4458445f4466446d4474447b4482448944904497449c44a144a644ad44b444bb
+44c044c744ce44d544dc44e144e644ed44f444f945004507450e4515451c4524452b
+4532453b4543454b4552455b4564456c457c458b459a45ab45bb45cb45da45eb45fc
+460c4613461a46214628462c4633463a4641464b4655465f46694673467d46874691
+469b46a546af46b946c346cd46d746e146eb46f546ff47094713471d4724472b4738
+473f47484751475f476847714781479247a647b247bb47c747d847e547ec47f347fa
+48014808480f4816481d4824482b4832483948404847484e4855485c486348694873
+487f488c489a48a948b548c248cf48de48ee48ff490f4920492a4931493f49424945
+4948494d49524959495c49634969496f4975497b49814987498d49934999499f49a5
+49ab49b149b749bd49c349c949cf49d549db49e04afc4b0d4b1e756e693030413075
+6e693030414474776f2e7375706572696f7274687265652e7375706572696f72756e
+693030423570696c63726f776f6e652e7375706572696f72416d6163726f6e616d61
+63726f6e416272657665616272657665416f676f6e656b616f676f6e656b43616375
+74656361637574654363697263756d666c65786363697263756d666c657843646f74
+616363656e7463646f74616363656e74436361726f6e636361726f6e446361726f6e
+646361726f6e4463726f61746463726f6174456d6163726f6e656d6163726f6e4562
+7265766565627265766545646f74616363656e7465646f74616363656e74456f676f
+6e656b656f676f6e656b456361726f6e656361726f6e4763697263756d666c657867
+63697263756d666c657847627265766567627265766547646f74616363656e746764
+6f74616363656e7447636f6d6d61616363656e7467636f6d6d61616363656e744863
+697263756d666c65786863697263756d666c657848626172686261724974696c6465
+6974696c6465496d6163726f6e696d6163726f6e496272657665696272657665496f
+676f6e656b696f676f6e656b49646f74616363656e74494a696a4a63697263756d66
+6c65786a63697263756d666c65784b636f6d6d61616363656e746b636f6d6d616163
+63656e746b677265656e6c616e6469634c61637574656c61637574654c636f6d6d61
+616363656e746c636f6d6d61616363656e744c6361726f6e6c6361726f6e4c646f74
+6c646f744e61637574656e61637574654e636f6d6d61616363656e746e636f6d6d61
+616363656e744e6361726f6e6e6361726f6e6e61706f7374726f706865456e67656e
+674f6d6163726f6e6f6d6163726f6e4f62726576656f62726576654f68756e676172
+756d6c6175746f68756e676172756d6c61757452616375746572616375746552636f
+6d6d61616363656e7472636f6d6d61616363656e74526361726f6e726361726f6e53
+61637574657361637574655363697263756d666c65787363697263756d666c657853
+636564696c6c6173636564696c6c6154636564696c6c6174636564696c6c61546361
+726f6e746361726f6e54626172746261725574696c64657574696c6465556d616372
+6f6e756d6163726f6e5562726576657562726576655572696e677572696e67556875
+6e676172756d6c6175747568756e676172756d6c617574556f676f6e656b756f676f
+6e656b5763697263756d666c65787763697263756d666c65785963697263756d666c
+65787963697263756d666c65785a61637574657a61637574655a646f74616363656e
+747a646f74616363656e746c6f6e6773756e6930313830756e6930313831756e6930
+313832756e6930313833756e6930313834756e6930313835756e6930313836756e69
+30313837756e6930313838756e6930313839756e6930313841756e6930313842756e
+6930313843756e6930313844756e6930313845756e6930313846756e693031393075
+6e6930313931756e6930313933756e6930313934756e6930313935756e6930313936
+756e6930313937756e6930313938756e6930313939756e6930313941756e69303139
+42756e6930313943756e6930313944756e6930313945756e69303139464f686f726e
+6f686f726e756e6930314132756e6930314133756e6930314134756e693031413575
+6e6930314136756e6930314137756e6930314138756e6930314139756e6930314141
+756e6930314142756e6930314143756e6930314144756e693031414555686f726e75
+686f726e756e6930314231756e6930314232756e6930314233756e6930314234756e
+6930314235756e6930314236756e6930314237756e6930314238756e693031423975
+6e6930314241756e6930314242756e6930314243756e6930314244756e6930314245
+756e6930314246756e6930314330756e6930314331756e6930314332756e69303143
+33756e6930314334756e6930314335756e6930314336756e6930314337756e693031
+4338756e6930314339756e6930314341756e6930314342756e6930314343756e6930
+314344756e6930314345756e6930314346756e6930314430756e6930314431756e69
+30314432756e6930314433756e6930314434756e6930314435756e6930314436756e
+6930314437756e6930314438756e6930314439756e6930314441756e693031444275
+6e6930314443657475726e6564756e6930314445756e6930314446756e6930314530
+756e6930314531756e6930314532756e6930314533756e6930314534756e69303145
+35476361726f6e676361726f6e756e6930314538756e6930314539756e6930314541
+756e6930314542756e6930314543756e6930314544756e6930314545756e69303145
+46756e6930314630756e6930314631756e6930314632756e6930314633756e693031
+4634756e6930314635756e6930314636756e6930314637756e6930314638756e6930
+3146394172696e6761637574656172696e6761637574654145616375746561656163
+7574654f736c61736861637574656f736c6173686163757465756e6930323030756e
+6930323031756e6930323032756e6930323033756e6930323034756e693032303575
+6e6930323036756e6930323037756e6930323038756e6930323039756e6930323041
+756e6930323042756e6930323043756e6930323044756e6930323045756e69303230
+46756e6930323130756e6930323131756e6930323132756e6930323133756e693032
+3134756e6930323135756e6930323136756e693032313753636f6d6d61616363656e
+7473636f6d6d61616363656e7454636f6d6d61616363656e7474636f6d6d61616363
+656e74756e6930323143756e6930323144756e6930323145756e6930323146756e69
+30323230756e6930323231756e6930323232756e6930323233756e6930323234756e
+6930323235756e6930323236756e6930323237756e6930323238756e693032323975
+6e6930323241756e6930323242756e6930323243756e6930323244756e6930323245
+756e6930323246756e6930323330756e6930323331756e6930323332756e69303233
+33756e6930323334756e6930323335756e6930323336646f746c6573736a756e6930
+323338756e6930323339756e6930323341756e6930323342756e6930323343756e69
+30323344756e6930323345756e6930323346756e6930323430756e6930323431756e
+6930323432756e6930323433756e6930323434756e6930323435756e693032343675
+6e6930323437756e6930323438756e6930323439756e6930323441756e6930323442
+756e6930323443756e6930323444756e6930323445756e6930323446617475726e65
+64756e6930323531756e6930323532756e6930323533637475726e6564756e693032
+3535756e6930323536756e6930323537756e6930323538756e6930323539756e6930
+323541756e6930323542756e6930323543756e6930323544756e6930323545756e69
+30323546756e6930323630756e6930323631756e693032363267616d6d616c617469
+6e756e6930323634756e693032363568686f6f6b756e6930323637756e6930323638
+756e6930323639756e6930323641756e6930323642756e6930323643756e69303236
+44756e69303236456d7475726e6564756e6930323730756e6930323731756e693032
+3732756e6930323733756e6930323734756e6930323735756e6930323736756e6930
+323737756e6930323738727475726e6564756e693032374172686f6f6b7475726e65
+64756e6930323743756e6930323744756e6930323745756e693032374652736d616c
+6c63617052736d616c6c696e766572746564756e6930323832756e6930323833756e
+6930323834756e6930323835756e6930323836756e6930323837756e693032383875
+6e6930323839756e6930323841756e6930323842756e6930323843756e6930323844
+756e6930323845756e6930323846756e6930323930756e6930323931756e69303239
+32756e6930323933756e6930323934676c6f7474616c73746f707265766572736564
+756e6930323936756e6930323937756e6930323938756e6930323939756e69303239
+41756e6930323942756e6930323943756e6930323944756e6930323945756e693032
+3946756e6930324130756e6930324131756e6930324132756e6930324133756e6930
+324134756e6930324135756e6930324136756e6930324137756e6930324138756e69
+30324139756e6930324141756e6930324142756e6930324143756e6930324144756e
+6930324145756e6930324146682e7375706572696f7268686f6f6b2e737570657269
+6f726a2e7375706572696f72722e7375706572696f72727475726e65642e73757065
+72696f7272686f6f6b7475726e65642e7375706572696f7252736d616c6c696e7665
+727465642e7375706572696f72772e7375706572696f72792e7375706572696f7275
+6e6930324239756e6930324241756e69303242426166696935373932396166696936
+34393337756e6930324245756e6930324246756e6930324330756e6930324331756e
+6930324332756e6930324333756e6930324334756e6930324335756e693032433875
+6e6930324339756e6930324341756e6930324342756e6930324343756e6930324344
+756e6930324345756e6930324346756e6930324430756e6930324431756e69303244
+32756e6930324433756e6930324434756e6930324435756e6930324436756e693032
+4437756e6930324445756e693032444667616d6d616c6174696e2e7375706572696f
+726c2e7375706572696f72732e7375706572696f72782e7375706572696f72676c6f
+7474616c73746f7072657665727365642e7375706572696f72756e6930324535756e
+6930324536756e6930324537756e6930324538756e6930324539756e693032454175
+6e6930324542756e6930324543756e6930324544756e6930324545756e6930324546
+756e6930324630756e6930324631756e6930324632756e6930324633756e69303246
+34756e6930324635756e6930324636756e6930324637756e6930324638756e693032
+4639756e6930324641756e6930324642756e6930324643756e6930324644756e6930
+324645756e69303246466772617665636f6d626163757465636f6d6263697263756d
+666c6578636f6d6274696c6465636f6d626d6163726f6e636f6d62756e6930333035
+6272657665636f6d62756e6930333037756e6930333038686f6f6b61626f7665636f
+6d62756e6930333041756e6930333042756e6930333043756e6930333044756e6930
+333045756e6930333046756e6930333130756e6930333131756e6930333132756e69
+30333133756e6930333134756e6930333135756e6930333136756e6930333137756e
+6930333138756e6930333139756e6930333141756e6930333142756e693033314375
+6e6930333144756e6930333145756e6930333146756e6930333230756e6930333231
+756e6930333232646f7462656c6f77636f6d62756e6930333234756e693033323575
+6e6930333236756e6930333237756e6930333238756e6930333239756e6930333241
+756e6930333242756e6930333243756e6930333244756e6930333245756e69303332
+46756e6930333330756e6930333331756e6930333332756e6930333333756e693033
+3334756e6930333335756e6930333336756e6930333337756e6930333338756e6930
+333339756e6930333341756e6930333342756e6930333343756e6930333344756e69
+30333345756e6930333346756e6930333430756e6930333431756e6930333432756e
+6930333433756e6930333434756e6930333435756e6930333436756e693033343775
+6e6930333438756e6930333439756e6930333441756e6930333442756e6930333443
+756e6930333444756e6930333445756e6930333530756e6930333531756e69303335
+32756e6930333533756e6930333534756e6930333535756e6930333536756e693033
+3537756e6930333538756e6930333539756e6930333541756e6930333542756e6930
+333543756e6930333544756e6930333545756e6930333546756e6930333630756e69
+30333631756e6930333632756e6930333633756e6930333634756e6930333635756e
+6930333636756e6930333637756e6930333638756e6930333639756e693033364175
+6e6930333642756e6930333643756e6930333644756e6930333645756e6930333646
+756e6930333734756e6930333735756e6930333741756e6930333742756e69303337
+43756e6930333744756e6930333745746f6e6f736469657265736973746f6e6f7341
+6c706861746f6e6f73616e6f74656c656961457073696c6f6e746f6e6f7345746174
+6f6e6f73496f7461746f6e6f734f6d6963726f6e746f6e6f73557073696c6f6e746f
+6e6f734f6d656761746f6e6f73696f74616469657265736973746f6e6f73416c7068
+614265746147616d6d6144656c7461457073696c6f6e5a6574614574615468657461
+496f74614b617070614c616d6264614d754e7558694f6d6963726f6e506952686f53
+69676d61546175557073696c6f6e5068694368695073694f6d656761496f74616469
+657265736973557073696c6f6e6469657265736973616c706861746f6e6f73657073
+696c6f6e746f6e6f73657461746f6e6f73696f7461746f6e6f73757073696c6f6e64
+69657265736973746f6e6f73616c7068616265746167616d6d6164656c7461657073
+696c6f6e7a6574616574617468657461696f74616b617070616c616d6264616e7578
+696f6d6963726f6e706972686f7369676d61317369676d61746175757073696c6f6e
+7068696368697073696f6d656761696f74616469657265736973757073696c6f6e64
+696572657369736f6d6963726f6e746f6e6f73757073696c6f6e746f6e6f736f6d65
+6761746f6e6f73756e6930334430746865746131557073696c6f6e31756e69303344
+33756e6930334434706869316f6d65676131756e6930334437756e6930334438756e
+6930334439756e6930334441756e6930334442756e6930334443756e693033444475
+6e6930334445756e6930334446756e6930334530756e6930334531756e6930334630
+756e6930334631756e6930334632756e6930334633756e6930334634756e69303346
+35756e6930334636756e6930334638756e6930334639756e6930334642756e693033
+4644756e6930334645756e6930334646756e69303430306166696931303032336166
+69693130303531616669693130303532616669693130303533616669693130303534
+61666969313030353561666969313030353661666969313030353761666969313030
+3538616669693130303539616669693130303630616669693130303631756e693034
+30446166696931303036326166696931303134356166696931303031376166696931
+30303138616669693130303139616669693130303230616669693130303231616669
+69313030323261666969313030323461666969313030323561666969313030323661
+66696931303032376166696931303032386166696931303032396166696931303033
+30616669693130303331616669693130303332616669693130303333616669693130
+30333461666969313030333561666969313030333661666969313030333761666969
+31303033386166696931303033396166696931303034306166696931303034316166
+69693130303432616669693130303433616669693130303434616669693130303435
+61666969313030343661666969313030343761666969313030343861666969313030
+34396166696931303036356166696931303036366166696931303036376166696931
+30303638616669693130303639616669693130303730616669693130303732616669
+69313030373361666969313030373461666969313030373561666969313030373661
+66696931303037376166696931303037386166696931303037396166696931303038
+30616669693130303831616669693130303832616669693130303833616669693130
+30383461666969313030383561666969313030383661666969313030383761666969
+31303038386166696931303038396166696931303039306166696931303039316166
+69693130303932616669693130303933616669693130303934616669693130303935
+616669693130303936616669693130303937756e6930343530616669693130303731
+61666969313030393961666969313031303061666969313031303161666969313031
+30326166696931303130336166696931303130346166696931303130356166696931
+30313036616669693130313037616669693130313038616669693130313039756e69
+30343544616669693130313130616669693130313933756e6930343630756e693034
+3631616669693130313436616669693130313934756e6930343634756e6930343635
+756e6930343636756e6930343637756e6930343638756e6930343639756e69303436
+41756e6930343642756e6930343643756e6930343644756e6930343645756e693034
+3646756e6930343730756e6930343731616669693130313437616669693130313935
+616669693130313438616669693130313936756e6930343736756e6930343737756e
+6930343743756e6930343744756e6930343745756e6930343746756e693034383375
+6e6930343843756e6930343844756e6930343845756e693034384661666969313030
+3530616669693130303938756e6930343932756e6930343933756e6930343934756e
+6930343935756e6930343936756e6930343937756e6930343938756e693034393975
+6e6930343941756e6930343942756e6930343943756e6930343944756e6930343945
+756e6930343946756e6930344130756e6930344131756e6930344132756e69303441
+33756e6930344134756e6930344135756e6930344136756e6930344137756e693034
+4138756e6930344139756e6930344141756e6930344142756e6930344143756e6930
+344144756e6930344145756e6930344146756e6930344230756e6930344231756e69
+30344232756e6930344233756e6930344234756e6930344235756e6930344236756e
+6930344237756e6930344238756e6930344239756e6930344241756e693034424275
+6e6930344243756e6930344244756e6930344245756e6930344246756e6930344330
+756e6930344331756e6930344332756e6930344333756e6930344334756e69303443
+37756e6930344338756e6930344339756e6930344341756e6930344342756e693034
+4343756e6930344430756e6930344431756e6930344432756e6930344433756e6930
+344434756e6930344435756e6930344436756e6930344437756e6930344438616669
+693130383436756e6930344441756e6930344442756e6930344443756e6930344444
+756e6930344445756e6930344446756e6930344530756e6930344531756e69303445
+32756e6930344533756e6930344534756e6930344535756e6930344536756e693034
+4537756e6930344538756e6930344539756e6930344541756e6930344542756e6930
+344543756e6930344544756e6930344545756e6930344546756e6930344630756e69
+30344631756e6930344632756e6930344633756e6930344634756e6930344635756e
+6930344636756e6930344637756e6930344638756e69303446396166696935373739
+39616669693537383031616669693537383030616669693537383032616669693537
+37393361666969353737393461666969353737393561666969353737393861666969
+3537373937616669693537383036756e693035424161666969353737393661666969
+35373830376166696935373833396166696935373634356166696935373834316166
+69693537383432616669693537383034616669693537383033616669693537363538
+756e6930354336616669693537363634616669693537363635616669693537363636
+61666969353736363761666969353736363861666969353736363961666969353736
+37306166696935373637316166696935373637326166696935373637336166696935
+37363734616669693537363735616669693537363736616669693537363737616669
+69353736373861666969353736373961666969353736383061666969353736383161
+66696935373638326166696935373638336166696935373638346166696935373638
+35616669693537363836616669693537363837616669693537363838616669693537
+36383961666969353736393061666969353737313661666969353737313761666969
+3537373138756e6930354633756e6930354634756e6931443135612e737570657269
+6f72617475726e65642e7375706572696f72756e6931443435756e6931443436622e
+7375706572696f72642e7375706572696f72652e7375706572696f72657475726e65
+642e7375706572696f72756e6931443442756e6931443443672e7375706572696f72
+697475726e65642e7375706572696f726b2e7375706572696f726d2e737570657269
+6f72656e672e7375706572696f726f2e7375706572696f72637475726e65642e7375
+706572696f72756e6931443534756e6931443535702e7375706572696f72742e7375
+706572696f72752e7375706572696f72756e69314435396d7475726e65642e737570
+6572696f72762e7375706572696f72756e6931443543756e6931443544756e693144
+3545756e6931443546756e6931443632756e6931443633756e6931443634756e6931
+443635756e6931443636756e6931443637632e7375706572696f72662e7375706572
+696f727a2e7375706572696f72756e6931453030756e6931453031756e6931453032
+756e6931453033756e6931453034756e6931453035756e6931453036756e69314530
+37756e6931453038756e6931453039756e6931453041756e6931453042756e693145
+3043756e6931453044756e6931453045756e6931453046756e6931453130756e6931
+453131756e6931453132756e6931453133756e6931453134756e6931453135756e69
+31453136756e6931453137756e6931453138756e6931453139756e6931453141756e
+6931453142756e6931453143756e6931453144756e6931453145756e693145314675
+6e6931453230756e6931453231756e6931453232756e6931453233756e6931453234
+756e6931453235756e6931453236756e6931453237756e6931453238756e69314532
+39756e6931453241756e6931453242756e6931453243756e6931453244756e693145
+3245756e6931453246756e6931453330756e6931453331756e6931453332756e6931
+453333756e6931453334756e6931453335756e6931453336756e6931453337756e69
+31453338756e6931453339756e6931453341756e6931453342756e6931453343756e
+6931453344756e6931453345756e6931453346756e6931453430756e693145343175
+6e6931453432756e6931453433756e6931453434756e6931453435756e6931453436
+756e6931453437756e6931453438756e6931453439756e6931453441756e69314534
+42756e6931453443756e6931453444756e6931453445756e6931453446756e693145
+3530756e6931453531756e6931453532756e6931453533756e6931453534756e6931
+453535756e6931453536756e6931453537756e6931453538756e6931453539756e69
+31453541756e6931453542756e6931453543756e6931453544756e6931453545756e
+6931453546756e6931453630756e6931453631756e6931453632756e693145363375
+6e6931453634756e6931453635756e6931453636756e6931453637756e6931453638
+756e6931453639756e6931453641756e6931453642756e6931453643756e69314536
+44756e6931453645756e6931453646756e6931453730756e6931453731756e693145
+3732756e6931453733756e6931453734756e6931453735756e6931453736756e6931
+453737756e6931453738756e6931453739756e6931453741756e6931453742756e69
+31453743756e6931453744756e6931453745756e6931453746576772617665776772
+61766557616375746577616375746557646965726573697377646965726573697375
+6e6931453836756e6931453837756e6931453838756e6931453839756e6931453841
+756e6931453842756e6931453843756e6931453844756e6931453845756e69314538
+46756e6931453930756e6931453931756e6931453932756e6931453933756e693145
+3934756e6931453935756e6931453936756e6931453937756e6931453938756e6931
+453939756e6931453941756e6931453942756e6931453943756e6931453944476572
+6d616e64626c73756e6931453946756e6931454130756e6931454131756e69314541
+32756e6931454133756e6931454134756e6931454135756e6931454136756e693145
+4137756e6931454138756e6931454139756e6931454141756e6931454142756e6931
+454143756e6931454144756e6931454145756e6931454146756e6931454230756e69
+31454231756e6931454232756e6931454233756e6931454234756e6931454235756e
+6931454236756e6931454237756e6931454238756e6931454239756e693145424175
+6e6931454242756e6931454243756e6931454244756e6931454245756e6931454246
+756e6931454330756e6931454331756e6931454332756e6931454333756e69314543
+34756e6931454335756e6931454336756e6931454337756e6931454338756e693145
+4339756e6931454341756e6931454342756e6931454343756e6931454344756e6931
+454345756e6931454346756e6931454430756e6931454431756e6931454432756e69
+31454433756e6931454434756e6931454435756e6931454436756e6931454437756e
+6931454438756e6931454439756e6931454441756e6931454442756e693145444375
+6e6931454444756e6931454445756e6931454446756e6931454530756e6931454531
+756e6931454532756e6931454533756e6931454534756e6931454535756e69314545
+36756e6931454537756e6931454538756e6931454539756e6931454541756e693145
+4542756e6931454543756e6931454544756e6931454545756e6931454546756e6931
+454630756e6931454631596772617665796772617665756e6931454634756e693145
+4635756e6931454636756e6931454637756e6931454638756e6931454639756e6931
+454641756e6931454642756e6931454643756e6931454644756e6931454645756e69
+31454646756e6931463030756e6931463031756e6931463032756e6931463033756e
+6931463034756e6931463035756e6931463036756e6931463037756e693146303875
+6e6931463039756e6931463041756e6931463042756e6931463043756e6931463044
+756e6931463045756e6931463046756e6931463130756e6931463131756e69314631
+32756e6931463133756e6931463134756e6931463135756e6931463138756e693146
+3139756e6931463141756e6931463142756e6931463143756e6931463144756e6931
+463230756e6931463231756e6931463232756e6931463233756e6931463234756e69
+31463235756e6931463236756e6931463237756e6931463238756e6931463239756e
+6931463241756e6931463242756e6931463243756e6931463244756e693146324575
+6e6931463246756e6931463330756e6931463331756e6931463332756e6931463333
+756e6931463334756e6931463335756e6931463336756e6931463337756e69314633
+38756e6931463339756e6931463341756e6931463342756e6931463343756e693146
+3344756e6931463345756e6931463346756e6931463430756e6931463431756e6931
+463432756e6931463433756e6931463434756e6931463435756e6931463438756e69
+31463439756e6931463441756e6931463442756e6931463443756e6931463444756e
+6931463530756e6931463531756e6931463532756e6931463533756e693146353475
+6e6931463535756e6931463536756e6931463537756e6931463539756e6931463542
+756e6931463544756e6931463546756e6931463630756e6931463631756e69314636
+32756e6931463633756e6931463634756e6931463635756e6931463636756e693146
+3637756e6931463638756e6931463639756e6931463641756e6931463642756e6931
+463643756e6931463644756e6931463645756e6931463646756e6931463730756e69
+31463731756e6931463732756e6931463733756e6931463734756e6931463735756e
+6931463736756e6931463737756e6931463738756e6931463739756e693146374175
+6e6931463742756e6931463743756e6931463744756e6931463830756e6931463831
+756e6931463832756e6931463833756e6931463834756e6931463835756e69314638
+36756e6931463837756e6931463838756e6931463839756e6931463841756e693146
+3842756e6931463843756e6931463844756e6931463845756e6931463846756e6931
+463930756e6931463931756e6931463932756e6931463933756e6931463934756e69
+31463935756e6931463936756e6931463937756e6931463938756e6931463939756e
+6931463941756e6931463942756e6931463943756e6931463944756e693146394575
+6e6931463946756e6931464130756e6931464131756e6931464132756e6931464133
+756e6931464134756e6931464135756e6931464136756e6931464137756e69314641
+38756e6931464139756e6931464141756e6931464142756e6931464143756e693146
+4144756e6931464145756e6931464146756e6931464230756e6931464231756e6931
+464232756e6931464233756e6931464234756e6931464236756e6931464237756e69
+31464238756e6931464239756e6931464241756e6931464242756e6931464243756e
+6931464244756e6931464245756e6931464246756e6931464330756e693146433175
+6e6931464332756e6931464333756e6931464334756e6931464336756e6931464337
+756e6931464338756e6931464339756e6931464341756e6931464342756e69314643
+43756e6931464344756e6931464345756e6931464346756e6931464430756e693146
+4431756e6931464432756e6931464433756e6931464436756e6931464437756e6931
+464438756e6931464439756e6931464441756e6931464442756e6931464444756e69
+31464445756e6931464446756e6931464530756e6931464531756e6931464532756e
+6931464533756e6931464534756e6931464535756e6931464536756e693146453775
+6e6931464538756e6931464539756e6931464541756e6931464542756e6931464543
+756e6931464544756e6931464545756e6931464546756e6931464632756e69314646
+33756e6931464634756e6931464636756e6931464637756e6931464638756e693146
+4639756e6931464641756e6931464642756e6931464643756e6931464644756e6931
+464645656e71756164656d71756164656e7370616365656d73706163657468726565
+706572656d7370616365666f7572706572656d7370616365736978706572656d7370
+616365666967757265737061636570756e6374756174696f6e73706163657468696e
+73706163656861697273706163657a65726f7769647468737061636568797068656e
+74776f68797068656e6e6f627265616b686f72697a6f6e74616c626172756e693230
+3136756e64657273636f726564626c71756f7465726576657273656471756f746564
+626c726576747269616e676c6562756c6c657468797068656e646f74756e69323032
+4670657274656e74686f7573616e646d696e7574657365636f6e647072696d657472
+69706c657072696d657265766572736564756e6932303336756e6932303337756e69
+323033426578636c616d64626c696e746572726f62616e67756e6932303345756e69
+323034327175657374696f6e5f7175657374696f6e7175657374696f6e5f6578636c
+616d6578636c616d5f7175657374696f6e756e6932303441756e6932303442756e69
+323034467a65726f2e7375706572696f72692e7375706572696f72666f75722e7375
+706572696f72666976652e7375706572696f727369782e7375706572696f72736576
+656e2e7375706572696f7265696768742e7375706572696f726e696e652e73757065
+72696f72706c75732e7375706572696f726d696e75732e7375706572696f72657175
+616c2e7375706572696f72706172656e6c6566742e7375706572696f72706172656e
+72696768742e7375706572696f726e2e7375706572696f727a65726f2e696e666572
+696f726f6e652e696e666572696f7274776f2e696e666572696f7274687265652e69
+6e666572696f72666f75722e696e666572696f72666976652e696e666572696f7273
+69782e696e666572696f72736576656e2e696e666572696f7265696768742e696e66
+6572696f726e696e652e696e666572696f72706c75732e696e666572696f726d696e
+75732e696e666572696f72657175616c2e696e666572696f72706172656e6c656674
+2e696e666572696f72706172656e72696768742e696e666572696f72612e696e6665
+72696f72652e696e666572696f726f2e696e666572696f72782e696e666572696f72
+756e6932303934756e6932303935756e6932303936756e6932303937756e69323039
+38756e6932303939756e6932303941756e6932303942756e6932303943756e693230
+41326672616e636c697261706573657461756e6932304138646f6e674575726f756e
+69323041467065736f756e6932313030756e6932313031756e693231303263656e74
+696772616465616669693631323438756e693231303666616872656e68656974756e
+6932313043756e6932313044756e6932313045756e6932313046496672616b747572
+616669693631323839756e69323131356e756d65726f756e6932313139756e693231
+3141526672616b747572756e6932313144756e6932313230756e6932313234756e69
+323132364f6d656761696e76657374696d61746564616c657068756e693231333675
+6e6932313337756e6932313338756e6932313339756e69323134466f6e6566696674
+6874776f6669667468737468726565666966746873666f75726669667468736f6e65
+7369787468666976657369787468736f6e656e756d657261746f724f6e65726f6d61
+6e54776f726f6d616e5468726565726f6d616e466f7572726f6d616e46697665726f
+6d616e536978726f6d616e536576656e726f6d616e4569676874726f6d616e4e696e
+65726f6d616e54656e726f6d616e456c6576656e726f6d616e5477656c7665726f6d
+616e756e6932313643756e6932313644756e6932313645756e69323136466f6e6572
+6f6d616e74776f726f6d616e7468726565726f6d616e666f7572726f6d616e666976
+65726f6d616e736978726f6d616e736576656e726f6d616e6569676874726f6d616e
+6e696e65726f6d616e74656e726f6d616e656c6576656e726f6d616e7477656c7665
+726f6d616e756e6932313743756e6932313744756e6932313745756e693231374675
+6e6932313830756e6932313831756e6932313832756e6932313833756e6932313834
+6172726f776c6566746172726f7775706172726f7772696768746172726f77646f77
+6e6172726f77626f74686172726f777570646e756e6932313936756e693231393775
+6e6932313938756e6932313939756e6932313941756e6932313942756e6932314136
+6172726f777570646e627365756e6932314145756e6932314243756e693231424475
+6e6932314330756e6932314331756e6932314342756e6932314343756e6932314344
+756e6932314345756e69323143466172726f7764626c6c6566746172726f7764626c
+75706172726f7764626c72696768746172726f7764626c646f776e6172726f776462
+6c626f7468756e69323144354e776172726f774e656172726f7753656172726f7753
+776172726f77756e6976657273616c756e69323230317061727469616c6469666665
+78697374656e7469616c756e6932323034656d707479736574756e69323230366772
+616469656e74656c656d656e746e6f74656c656d656e74756e693232304173756368
+74686174756e6932323043756e693232304470726f64756374756e69323231307375
+6d6d6174696f6e756e6932323133756e6932323134756e6932323135756e69323231
+36617374657269736b6d617468756e6932323138756e69323231397261646963616c
+756e6932323142756e693232314370726f706f7274696f6e616c696e66696e697479
+756e6932323146616e676c65756e6932323231756e6932323232756e693232323375
+6e6932323234756e6932323235756e69323232366c6f676963616c616e646c6f6769
+63616c6f72696e74657273656374696f6e756e696f6e696e74656772616c756e6932
+323243756e6932323244756e6932323245756e693232333673696d696c6172756e69
+32323431636f6e677275656e74617070726f78657175616c756e6932323439756e69
+323235396e6f74657175616c6571756976616c656e6365756e69323236326c657373
+657175616c67726561746572657175616c756e6932323641756e6932323642756e69
+32323645756e6932323646756e6932323730756e693232373170726f706572737562
+73657470726f70657273757065727365746e6f74737562736574756e693232383563
+6972636c65706c7573756e6932323936636972636c656d756c7469706c79756e6932
+323938756e6932324132756e6932324133756e693232413470657270656e64696375
+6c6172756e6932324136756e6932324236756e6932324237646f746d617468756e69
+32324545756e6932324546756e6932333030756e6932333032756e6932333033756e
+6932333130696e74656772616c746f70696e74656772616c626f74746f6d756e6932
+333236756e6932333237756e6932333239756e6932333241756e6932333242756e69
+32333744756e6932333830756e6932333942756e6932333943756e6932333944756e
+6932333945756e6932333946756e6932334130756e6932334131756e693233413275
+6e6932334133756e6932334134756e6932334135756e6932334136756e6932334137
+756e6932334138756e6932334139756e6932334141756e6932334142756e69323341
+43756e6932334144696e74656772616c657874656e73696f6e756e6932334433756e
+6932343233756e6932343630756e6932343631756e6932343632756e693234363375
+6e6932343634756e6932343635756e6932343636756e6932343637756e6932343638
+756e6932343639756e6932343641756e6932343642756e6932343643756e69323436
+44756e6932343645756e6932343646756e6932343730756e6932343731756e693234
+3732756e6932343733756e6932343734756e6932343735756e6932343736756e6932
+343737756e6932343738756e6932343739756e6932343741756e6932343742756e69
+32343743756e6932343744756e6932343745756e6932343746756e6932343830756e
+6932343831756e6932343832756e6932343833756e6932343834756e693234383575
+6e6932343836756e6932343837756e6932344236756e6932344237756e6932344238
+756e6932344239756e6932344241756e6932344242756e6932344243756e69323442
+44756e6932344245756e6932344246756e6932344330756e6932344331756e693234
+4332756e6932344333756e6932344334756e6932344335756e6932344336756e6932
+344337756e6932344338756e6932344339756e6932344341756e6932344342756e69
+32344343756e6932344344756e6932344345756e6932344346756e6932344430756e
+6932344431756e6932344432756e6932344433756e6932344434756e693234443575
+6e6932344436756e6932344437756e6932344438756e6932344439756e6932344441
+756e6932344442756e6932344443756e6932344444756e6932344445756e69323444
+46756e6932344530756e6932344531756e6932344532756e6932344533756e693234
+4534756e6932344535756e6932344536756e6932344537756e6932344538756e6932
+344539756e6932344541756e6932344542756e6932344543756e6932344544756e69
+32344545756e6932344546756e6932344630756e6932344631756e6932344632756e
+6932344633756e6932344634756e6932344635756e6932344636756e693234463775
+6e6932344638756e6932344639756e6932344641756e6932344642756e6932344643
+756e6932344644756e6932344645756e693234464666696c6c6564626f7848323230
+373374726961677570756e6932354233756e6932354236756e693235423774726961
+67646e756e6932354244756e6932354330756e6932354331756e6932354336756e69
+32354337756e69323543396c6f7a656e6765626967636972636c65756e6932354345
+483138353333756e6932354430756e6932354431756e6932354432756e6932354433
+756e6932354434756e6932354435756e6932354436756e69323544376f70656e6275
+6c6c6574756e6932363035756e6932363039756e6932363139756e6932363142756e
+6932363145756e6932363237756e6932363246756e6932363339756e693236334175
+6e6932363342756e6932363343756e6932363344756e6932363345756e6932363346
+66656d616c65756e69323634316d616c65756e6932363433756e6932363434756e69
+32363435756e6932363436756e6932363437756e6932363438756e6932363439756e
+6932363441756e6932363442756e6932363443756e6932363444756e693236344575
+6e6932363446756e6932363530756e6932363531756e6932363532756e6932363533
+756e6932363630756e6932363633756e6932363635756e6932363636756e69323636
+396d75736963616c6e6f74656d75736963616c6e6f746564626c756e693236364375
+6e6932363644756e6932363645756e6932363646756e6932363935756e6932363938
+756e6932364132756e6932364133756e6932364134756e6932364135756e69323641
+36756e6932364137756e69323641436d6172726965646469766f72636564756e6932
+364146756e6932373134756e693237313864696564756e6932373637756e69323737
+36756e6932373737756e6932373738756e6932373739756e6932373741756e693237
+3742756e6932373743756e6932373744756e6932373745756e6932373746756e6932
+374332756e6932374536756e6932374537756e6932374538756e6932374539756e69
+32433630756e6932433631756e6932433632756e6932433633756e6932433634756e
+6932433635756e6932433636756e6932433637756e6932433638756e693243363975
+6e6932433641756e6932433642756e6932433643756e6932433645756e6932433646
+756e6932433734756e6932433735756e6932433736756e6932433737756e69324530
+32756e6932453033756e6932453034756e6932453035756e6932453038756e693245
+3039756e6932453041756e6932453137756e6932453138756e6941363536756e6941
+363537756e6941373144756e6941373230756e6941373231756e6941373635547578
+756e6945303031756e6945303032756e6945303033756e6945303034756e69453030
+35756e6945303036756e6945303037756e6945303038756e6945303039756e694530
+3041756e6945303042636f70796c6566747075626c6963646f6d61696e6372656174
+697665636f6d6d6f6e737a65726f2e736c6173686669747465647a65726f2e666974
+7465646f6e652e66697474656474776f2e66697474656474687265652e6669747465
+64666f75722e666974746564666976652e6669747465647369782e66697474656473
+6576656e2e66697474656465696768742e6669747465646e696e652e666974746564
+4575726f2e66697474656459656e2e666974746564756e6945303143612e616c7475
+6e694530314570657274686f7573616e647a65726f7a65726f2e6f6c647374796c65
+6f6e652e6f6c647374796c6574776f2e6f6c647374796c6574687265652e6f6c6473
+74796c65666f75722e6f6c647374796c65666976652e6f6c647374796c657369782e
+6f6c647374796c65736576656e2e6f6c647374796c6565696768742e6f6c64737479
+6c656e696e652e6f6c647374796c65756e69453032414164696572657369732e616c
+744f64696572657369732e616c745564696572657369732e616c74572e616c74665f
+62665f665f68665f665f6a665f665f6b665f665f74665f68665f6a665f6b665f7463
+5f6b635f68745f74635f746c6f6e67735f696c6f6e67735f6c6f6e6773756e694530
+3430756e6945303431756e69453034326c6f6e67735f6c6c6f6e67735f6c6f6e6773
+5f696c6f6e67735f7361652e616c746c6f6e67735f68515f75545f68745f7a682e61
+6c746765726d616e64626c732e616c746765726d616e64626c732e73733033476572
+6d616e64626c732e616c74756e6945303446616d70657273616e642e616c74612e73
+63622e7363632e7363642e7363652e7363662e7363672e7363682e7363692e73636a
+2e73636b2e73636c2e73636d2e73636e2e73636f2e7363702e7363712e7363722e73
+63732e7363742e7363752e7363762e7363772e7363782e7363792e73637a2e736375
+6e694530364268797068656e2e73636167726176652e73636161637574652e736361
+63697263756d666c65782e73636174696c64652e73636164696572657369732e7363
+6172696e672e736361652e736363636564696c6c612e73636567726176652e736365
+61637574652e73636563697263756d666c65782e73636564696572657369732e7363
+6967726176652e73636961637574652e73636963697263756d666c65782e73636964
+696572657369732e73636574682e73636e74696c64652e73636f67726176652e7363
+6f61637574652e73636f63697263756d666c65782e73636f74696c64652e73636f64
+696572657369732e73636f652e73636f736c6173682e73637567726176652e736375
+61637574652e73637563697263756d666c65782e73637564696572657369732e7363
+7961637574652e736374686f726e2e73637964696572657369732e7363696a2e7363
+6765726d616e64626c732e7363616c746765726d616e64626c732e7363515f752e73
+63712e73635f752e73636463726f61742e73636162726576652e7363616f676f6e65
+6b2e73636361637574652e7363636361726f6e2e7363646361726f6e2e7363656f67
+6f6e656b2e7363656361726f6e2e73636762726576652e73636c61637574652e7363
+6c736c6173682e73636e61637574652e73636e6361726f6e2e7363656e672e73636f
+68756e676172756d6c6175742e73637261637574652e7363726361726f6e2e736373
+61637574652e736373636564696c6c612e7363736361726f6e2e736374636564696c
+6c612e7363746261722e73637572696e672e73637568756e676172756d6c6175742e
+73637a61637574652e73637a646f74616363656e742e73637a6361726f6e2e73636c
+6361726f6e2e7363746361726f6e2e736374636f6d6d61616363656e742e73637363
+6f6d6d61616363656e742e736369646f74616363656e742e7363616d70657273616e
+642e7363612e7363616c74712e7375706572696f726772617665636f6d622e737570
+736163757465636f6d622e7375707363697263756d666c6578636f6d622e73757073
+74696c6465636f6d622e737570736d6163726f6e636f6d622e73757073662e73686f
+7274665f662e73686f7274756e6945304532756e6945304533756e6945304534756e
+6945304535756e6945304536756e6945304537756e6945304538756e694530453975
+6e69453045414b2e616c74522e616c744a2e616c74756e6945304545756e69453045
+46756e6945304630772e616c74756e6945304632756e6945304633756e6945304634
+756e6945304635792e616c74412e616c74756e6945304639756e69453046426b7265
+6973756e6945313031756e6945313034756e6945313035756e6945313036756e6945
+3130377a65726f2e6361706f6e652e63617074776f2e63617074687265652e636170
+666f75722e636170666976652e6361707369782e636170736576656e2e6361706569
+6768742e6361706e696e652e6361707a65726f2e7461626f6c647374796c656f6e65
+2e7461626f6c647374796c6574776f2e7461626f6c647374796c6574687265652e74
+61626f6c647374796c65666f75722e7461626f6c647374796c65666976652e746162
+6f6c647374796c657369782e7461626f6c647374796c65736576656e2e7461626f6c
+647374796c6565696768742e7461626f6c647374796c656e696e652e7461626f6c64
+7374796c65756e6945313238756e6945313239756e6945313241756e69453133306c
+656166756e6945313342756e6945313343756e6945313344622e696e666572696f72
+632e696e666572696f72642e696e666572696f72662e696e666572696f72672e696e
+666572696f72682e696e666572696f72692e696e666572696f726a2e696e66657269
+6f726b2e696e666572696f726c2e696e666572696f726d2e696e666572696f726e2e
+696e666572696f72702e696e666572696f72712e696e666572696f72722e696e6665
+72696f72732e696e666572696f72742e696e666572696f72752e696e666572696f72
+762e696e666572696f72772e696e666572696f72792e696e666572696f727a2e696e
+666572696f72756e6945313838756e69453138396166696931303038362e616c7475
+6e694531394467726176652e63617061637574652e63617063697263756d666c6578
+2e6361706361726f6e2e63617062726576652e63617068756e676172756d6c617574
+2e63617073706163655f756e69303330462e6361706272657665696e766572746564
+636d622e63617062726576652e63797263617062726576652e637972646965726573
+69732e636170686f6f6b61626f7665636f6d622e636170646f74616363656e742e63
+6170756e6945334530756e6945334531756e6945334532756e6945334533756e6945
+334534756e6945334535756e6945334536756e6945334537756e6945334538756e69
+45334539756e6945334541756e6945334542756e6945334543756e6945334544756e
+6945334630756e6945334631756e6945334632756e69453346336d65747269637a65
+726f2e736c617368706172656e6c6566742e7363706172656e72696768742e736362
+7261636b65746c6566742e7363627261636b657472696768742e736362726163656c
+6566742e7363627261636572696768742e73636578636c616d646f776e2e73637175
+657374696f6e646f776e2e73636775696c6c656d6f746c6566742e73636775696c6c
+656d6f7472696768742e73636775696c73696e676c6c6566742e73636775696c7369
+6e676c72696768742e736368797068656e2e636170756e6946364245616669693130
+3036362e6974616c665f66665f69665f6c665f665f69665f665f6c6c6f6e67735f74
+735f74756e6946464644753144353338753144353339753144353342753144353343
+75314435334475314435334575314435343075314435343175314435343275314435
+34337531443534347531443534367531443534377531443534417531443534427531
+44353443753144353444753144353445753144353446753144353530352e332e304c
+696e7578204c6962657274696e65206279205068696c69707020482e20506f6c6c2c
+0a4f70656e20466f6e7420756e646572205465726d73206f6620666f6c6c6f77696e
+67204672656520536f667477617265204c6963656e7365733a0a47504c202847656e
+6572616c205075626c6963204c6963656e736529207769746820666f6e742d657863
+657074696f6e20616e64204f464c20284f70656e20466f6e74204c6963656e736529
+2e0a43726561746564207769746820466f6e74466f7267652028687474703a2f2f66
+6f6e74666f7267652e73662e6e6574290a5365707420323030332c20323030342c20
+323030352c20323030362c20323030372c20323030382c20323030392c2032303130
+2c20323031312c323031324c696e7578204c6962657274696e65204f4c696e757820
+4c6962657274696e65204f000000000100020003000400050006000700680009000a
+000b000c000d000e000f0010001100120013001400150016001700180019001a001b
+001c001d001e001f0020002100220023002400250026002700280029002a002b002c
+002d002e002f0030003100320033003400350036003700380039003a003b003c003d
+003e003f0040007c00420043004400450046004700480049004a004b004c004d004e
+004f0050005100520053005400550056005700580059005a005b005c005d005e005f
+01870060006100620067006400a00066008300aa008b006a0097018800a5008000a1
+009c0189018a007d018b018c00720085018d008f0078009e009b00a3007b00ae00ab
+00ac00b000ad00af008a00b100b500b200b300b400b900b600b700b8009a00ba00be
+00bb00bc00bf00bd00a8008d00c400c100c200c300c5009d009500cb00c800c900cd
+00ca00cc009000ce00d200cf00d000d100d600d300d400d500a700d700db00d800d9
+00dc00da009f009300e100de00df00e000e200a200e3018e018f0190019101920193
+019401950196019701980199019a019b019c019d019e019f01a001a101a201a301a4
+01a501a601a701a801a901aa01ab01ac01ad01ae01af01b001b101b201b301b401b5
+01b601b701b801b901ba01bb01bc01bd01be009101bf01c001c101c201c301c401c5
+01c601c701c801c901ca01cb01cc01cd008c009201ce01cf01d001d101d201d301d4
+01d501d601d701d801d901da01db01dc008e009401dd01de01df01e001e101e201e3
+01e401e501e601e701e800c000dd01e901ea01eb01ec01ed01ee01ef01f001f101f2
+01f301f401f501f601f701f801f901fa01fb01fc01fd01fe00c601ff020002010202
+00c700e40203020402050206020702080209020a020b020c020d020e020f02100211
+021202130214021500650216021702180219021a021b021c021d021e021f02200221
+02220223022402250226022702280229022a022b022c022d022e022f023002310232
+0233023402350236023702380239023a023b023c023d023e023f0240024102420243
+024402450246024702480249024a024b024c024d024e024f02500251025202530254
+02550256025702580259025a025b025c025d025e025f026002610262026302640265
+0266026702680269026a026b026c026d026e026f0270027102720273027402750276
+027702780279027a027b027c027d027e027f02800281028202830284028502860287
+02880289028a028b028c028d028e028f029002910292029302940295029602970298
+0299029a029b029c029d029e029f02a002a102a202a302a402a502a602a702a802a9
+02aa02ab02ac02ad02ae02af02b002b102b202b302b402b502b602b702b802b902ba
+02bb02bc02bd02be02bf02c002c102c202c302c402c502c602c702c802c902ca02cb
+02cc02cd02ce02cf02d002d102d202d302d402d502d602d702d802d902da02db02dc
+02dd02de02df02e002e102e202e302e402e502e602e702e802e902ea02eb02ec02ed
+02ee02ef02f002f102f202f302f402f502f602f702f802f902fa02fb02fc02fd02fe
+02ff0300030103020303030403050306030703080309030a030b030c030d030e030f
+0310031103120313031403150316031703180319031a031b031c031d031e031f0320
+032103220323032403250326032703280329032a032b032c032d032e032f03300331
+03320333033403350336033703380339033a033b033c033d033e033f034003410342
+034303440345034603470348007e00880349034a034b034c034d034e034f03500351
+03520353035403550356035703580081008200840087007f00860359035a035b035c
+035d035e035f0360036103620363036403650366036703680369036a036b036c036d
+036e036f0370037103720373037403750376037703780379037a037b037c037d037e
+037f0380038103820383038403850386038703880389038a038b038c038d038e038f
+0390039103920393039403950396039703980399039a039b039c039d039e039f03a0
+03a103a203a303a403a503a603a703a803a903aa03ab03ac03ad03ae03af03b003b1
+03b203b303b403b503b603b703b803b903ba03bb03bc03bd03be03bf03c003c103c2
+03c303c403c503c603c703c803c903ca03cb03cc03cd03ce03cf03d003d103d203d3
+03d403d503d603d703d803d903da03db03dc03dd03de03df03e003e103e203e303e4
+03e503e603e703e803e903ea03eb03ec03ed03ee03ef03f003f103f203f303f403f5
+03f603f703f803f903fa03fb03fc03fd03fe03ff0400040104020403040404050406
+040704080409040a040b040c040d040e040f04100411041204130414041504160417
+04180419041a041b041c041d041e041f042004210422042304240425009804260427
+04280429042a042b042c042d042e042f043004310432043304340435043604370438
+0439043a043b043c043d043e043f0440044104420443044404450446044704480449
+044a044b044c044d044e044f0450045104520453045404550456045704580459045a
+045b045c045d045e045f0460046104620463046404650466046704680469046a046b
+046c046d046e046f0470047104720473047404750476047704780479047a047b047c
+047d047e047f0480048104820483048404850486048704880489048a048b048c048d
+048e048f0490049104920493049404950496049704980499049a049b049c049d049e
+049f04a004a104a204a304a404a504a604a704a804a904aa04ab04ac04ad04ae04af
+04b004b104b204b304b404b504b604b704b804b904ba04bb04bc04bd04be04bf04c0
+04c104c204c304c404c504c604c704c804c904ca04cb04cc04cd04ce04cf04d004d1
+04d204d304d404d504d604d704d804d904da04db04dc04dd04de04df04e004e104e2
+04e304e404e504e604e704e804e904ea04eb04ec04ed04ee04ef04f004f104f204f3
+04f404f504f604f704f804f904fa04fb04fc04fd04fe04ff05000501050205030504
+05050506050705080509050a050b050c050d050e050f051005110512051305140515
+0516051705180519051a051b051c051d051e051f0520052105220523052405250526
+052705280529052a052b052c052d052e052f05300531053205330534053505360537
+05380539053a053b053c053d053e053f054005410542054305440545054605470548
+0549054a054b054c054d054e054f0550055105520553055405550556055705580559
+055a055b055c055d055e055f0560056105620563056405650566056705680569056a
+056b056c056d056e056f0570057105720573057405750576057705780579057a057b
+057c057d057e057f0580058105820583058405850586058705880589058a058b058c
+058d058e058f0590059105920593059405950596059705980599059a059b059c059d
+059e059f05a005a105a205a305a405a505a605a705a805a905aa05ab05ac05ad05ae
+05af05b005b105b205b305b405b505b605b705b805b905ba05bb05bc05bd05be05bf
+05c005c105c205c305c405c505c605c705c805c905ca05cb05cc05cd05ce05cf05d0
+05d105d205d305d405d505d605d705d805d905da05db05dc05dd05de05df05e005e1
+05e205e305e405e505e605e705e805e905ea05eb05ec05ed05ee05ef05f005f105f2
+05f305f405f505f605f705f805f905fa05fb05fc05fd05fe05ff0600060106020603
+060406050606060706080609060a060b060c060d060e060f06100611061206130614
+06150616061706180619061a061b061c061d061e061f062006210622062306240625
+0626062706280629062a062b062c062d062e062f0630063106320633063406350636
+063706380639063a063b063c063d063e063f06400641064206430644064506460647
+06480649064a064b064c064d064e064f065006510652065306540655065606570658
+0659065a065b065c065d065e065f0660066106620663066406650666066706680669
+066a066b066c066d066e066f0670067106720673067406750676067706780679067a
+067b067c067d067e067f0680068106820683068406850686068706880689068a068b
+068c068d068e068f0690069106920693069406950696069706980699069a069b069c
+069d069e069f06a006a106a206a306a406a506a606a706a806a906aa06ab06ac06ad
+06ae06af06b006b106b206b306b406b506b606b706b806b906ba06bb06bc06bd06be
+06bf06c006c106c206c306c406c506c606c706c806c906ca06cb06cc06cd06ce06cf
+06d006d106d206d306d406d506d606d706d806d906da06db06dc06dd06de06df06e0
+06e106e206e306e406e506e606e706e806e906ea06eb06ec06ed06ee06ef06f006f1
+06f206f306f406f506f606f706f806f906fa06fb06fc06fd06fe06ff070007010702
+0703070407050706070707080709070a070b070c070d070e070f0710071107120713
+071407150716071707180719071a071b071c071d071e071f07200721072207230724
+07250726072707280729072a072b072c072d072e072f073007310732073307340735
+0736073707380739073a073b073c073d073e073f0740074107420743074407450746
+074707480749074a074b074c074d074e074f07500751075207530754075507560757
+07580759075a075b075c075d075e075f076007610762076307640765076607670768
+0769076a076b076c076d076e076f0770077107720773077407750776077707780779
+077a077b077c077d077e077f0780078107820783078407850786078707880789078a
+078b078c078d078e078f013a006f0089079007910792004100080075079300690077
+00760794007000710074079500ee00ed007907960797007a07980799079a079b079c
+079d079e006b006c079f07a007a107a207a3006307a407a507a607a707a807a907aa
+07ab07ac07ad07ae07af07b007b107b207b307b407b507b607b707b807b907ba07bb
+07bc07bd07be07bf07c007c107c207c307c407c507c607c707c807c907ca07cb07cc
+07cd07ce07cf07d007d107d207d307d407d507d607d707d807d907da07db07dc07dd
+07de07df07e007e107e207e307e407e507e607e707e807e907ea07eb07ec07ed07ee
+07ef07f0009907f107f207f307f407f507f607f707f807f907fa0144014507fb07fc
+07fd07fe07ff08000140014101420143080108020803080408050806080708080809
+080a080b080c080d080e080f0810081108120813081408150816081708180819081a
+081b081c081d081e081f0820082108220823082408250826082708280829082a082b
+082c082d082e082f0830083108320833083408350836083708380839083a083b083c
+083d083e083f0840084108420843084408450846084708480849084a084b084c084d
+084e084f085008510852085308540855085608570858085900a6085a085b085c085d
+085e085f0860086108620863086408650866086708680869086a086b086c086d086e
+086f0870087108720873087408750876087708780879087a087b087c087d087e087f
+0880088108820883088408850886088708880889088a088b088c088d088e088f0890
+089108920893089408950896089708980899089a089b089c089d089e089f08a008a1
+08a208a308a408a508a608a708a808a908aa08ab08ac08ad08ae08af08b008b108b2
+08b308b408b508b608b708b808b908ba08bb08bc08bd08be08bf08c008c108c208c3
+08c408c508c608c708c808c908ca08cb08cc08cd08ce08cf08d008d108d208d308d4
+08d508d608d708d808d908da08db08dc08dd08de08df08e008e108e208e308e408e5
+08e608e708e808e908ea08eb08ec08ed08ee08ef08f008f108f208f308f408f508f6
+08f708f808f908fa08fb08fc08fd08fe08ff09000901090209030904090509060907
+09080909090a090b090c090d090e090f091009110912091309140915091609170918
+0919091a091b091c091d091e091f0920092109220923092409250926092709280929
+092a092b092c092d092e092f0930093109320933093409350936093709380939093a
+093b093c093d093e093f0940094109420943094409450946094709480949094a094b
+094c094d094e094f0950095109520953095409550956095709580959095a095b095c
+095d095e095f0960096109620963096409650966096709680969096a096b096c096d
+096e096f0970097109720973097409750976097709780979097a097b097c097d097e
+097f0980098109820983098409850986098709880989098a098b098c098d098e098f
+0990099109920993099409950996099709980999099a099b099c099d099e099f09a0
+09a109a209a309a409a509a609a709a809a909aa09ab09ac09ad09ae09af09b009b1
+09b209b309b409b509b609b709b809b909ba09bb09bc09bd09be09bf09c009c109c2
+09c309c409c509c609c709c809c909ca09cb09cc09cd09ce09cf09d009d109d209d3
+09d409d509d609d709d809d909da09db09dc09dd09de09df09e009e109e209e309e4
+09e509e609e709e809e909ea09eb09ec09ed09ee09ef09f009f109f209f309f409f5
+09f609f709f809f909fa09fb09fc09fd09fe09ff0a000a010a020a030a040a050a06
+0a070a080a090a0a0a0b0a0c0a0d0a0e0a0f0a100a110a120a130a140a150a160a17
+0a180a190a1a0a1b0a1c0a1d0a1e0a1f0a200a210a220a230a240a250a260a270a28
+0a290a2a0a2b0a2c0a2d0a2e0a2f0a300a310a320a330a340a350a360a370a380a39
+0a3a0a3b0a3c0a3d0a3e0a3f0a400a410a420a430a440a450a460a470a480a490a4a
+0a4b0a4c0a4d0a4e0a4f0a500a510a520a530a540a550a560a570a580a590a5a0a5b
+0a5c0a5d0a5e0a5f0a600a610a620a630a640a650a660a670a680a690a6a0a6b0a6c
+0a6d0a6e0a6f0a700a710a720a730a740a750a760a770a780a790a7a0a7b0a7c0a7d
+0a7e0a7f0a800a810a820a830a840a850a860a870a880a890a8a0a8b0a8c0a8d0a8e
+0a8f0a900a910a920a930a940a950a960a970a980a990a9a0a9b0a9c0a9d0a9e0a9f
+0aa00aa10aa20aa30aa40aa50aa60aa70aa80aa90aaa0aab0aac0aad0aae0aaf0ab0
+0ab10ab20ab30ab40ab50ab60ab70ab80ab90aba0abb0abc0abd0abe0abf0ac00ac1
+0ac20ac30ac40ac50ac60ac70ac80ac90aca0acb0acc0acd0ace0acf0ad00ad10ad2
+0ad30ad40ad50ad60ad70ad80ad90ada0adb0adc0add0ade0adf0ae00ae10ae20ae3
+0ae40ae50ae60ae70ae80ae90aea0aeb0aec0aed0aee0aef0af00af10af20af30af4
+0af50af60af70af80af90afa0afb0afc0afd0afe0aff0b000b010b020b030b040b05
+0b060b070b080b090b0a0b0b0b0c0b0d0b0e0b0f0b100a720300000100004e000051
+00006a0000840000e20002fb00032d00046f0004800004d300052800053200054600
+055900056b0005790005920005ae00066b00068e0006bd0006db0006fd0007260007
+4900077500079e0007b50007d80007e50007fc00080900082b00090700092000094d
+00096100097b0009d9000a9a000b78000b91000ba4000bb9000bd8000bfa000c1500
+0c31000c4d000cf4000d15000d3e000e9d000f3e000f53000f62000f72000f80000f
+93000fb2000fea000ffe00103600104900106900107c0010a30010c20010d7001105
+00112400113d00122400124100126300128600129f0012b300144000153600155100
+16530017040017de0018910018a3001972001981001acc001adb001aeb001bf2001c
+ab001cc3001d7a001d8f001d92001dac001f3d001fe200205e00214d0021650022d1
+0022e80023b70023d40023e20024260024380024f600251b0025380025520025b000
+25d30025e200267c00277700278a00279e0027b30027ee0027fc00290b0029b4002a
+d5002af8002b1a002b3c002b5e002b8f002bc2002ceb002d37002d52002d97002ddc
+002e21002e89002ea3002ebe002ed9002f00002f1d002f52002f76002f9a002fbe00
+2fef00302000305600307b0030990030b70030d50030f90031140031b300326b0032
+9c0032cd0032fe0033410033800033c00033f300341c00344200346800348e0034c8
+0034e20034fd0035180035420035c80035fd00362000364300366600369c0036ce00
+37ba0037de00380600382e00385600388a0038a10039b70039da0039fb003a2f003a
+58003a93003bbd003d0b003d28003d45003d62003d7f003da0003dc2003de0003e01
+003e25003ec4003fab003fdb00402100404800408f0040c800410f00413900420d00
+42e500432b0043540043820043ee0044250044a80044d900454900457f0045f20046
+140047030048540049b60049de004ab5004ad1004b27004b46004bd2004ccf004dcb
+004dec004dff004e1f004e5f004e7c004e9a004ec8004eee0050860050b50050d100
+51050051510051850051ad0051df00520f0052b700534400536d0053940053c30053
+f000541a0054440054c80055f70056e200570600572a0057530057800057ac0057da
+0058a700595c00598d0059b40059ed005a1b005a4c005a77005ac1005b3c005b8600
+5bb9005d8e005e80005eca005f01005ff600613f00617e0061a000625200633a0063
+6500639b0063b80063e200640400643800646200649a0064c00064f300663a00676a
+0067d90067f200680d00682400684c0068710068960068c60068ef00691c00694400
+69c6006aa6006bd3006c10006ca9006d60006e08006eb3006faf00707100708e0071
+7b00721b0072dd0073620074160074330074b40075f30076870077ea0078e3007a02
+007a86007b26007c73007df6007e6e007f730081360081e50082ab00834400836b00
+839600848000851f00862c00875a00882d0088a80089340089590089de008b29008c
+25008ca9008d2f008d4c008e6f008f07008f8c0090440090ef0092380093990093ae
+00942d0094a800953c0096260096810096de00977900982800983e00985e00989600
+98af0098f500992f0099910099c2009a09009a46009b00009b41009c60009c82009c
+b7009cd3009cee009d12009d39009d58009d84009daf009df2009e24009f0c009fc2
+00a0a000a0d200a1a200a1c300a1ff00a24900a29900a2dd00a33300a37900a4b800
+a67f00a6ad00a71e00a74700a8c700a8eb00a90e00a93b00a96700a98700aa0800aa
+2a00aa8000aab100aafe00ab2c00ab9800ad1300adbc00ade500ae0c00af9800b077
+00b0ce00b11000b13f00b16a00b19100b1cc00b1f700b23200b27d00b2ac00b33b00
+b37200b3da00b44f00b47100b4f100b51b00b54900b57400b5a200b5da00b60b00b6
+4900b67a00b69e00b6d100b6f500b72600b77700b7b800b7fe00b81f00b8a200b92c
+00b94f00b97c00baf400bbdf00bc7000bd0300bd7600bded00be1300be4900beb500
+bee900bf2700bf6200bff500c03500c05d00c08400c0d500c10500c12100c13900c1
+f300c2d700c3a700c3bd00c4a400c5d100c78200c91c00ca6000caea00cc2000cd2f
+00ceb100cf5400d00100d0a800d18e00d19d00d3e000d59300d65900d6e500d7a600
+d8d300d97d00da9500dc2c00ddd600debd00df7f00e0a200e18000e1d300e2a900e3
+b500e46b00e4ec00e50d00e6ee00e71500e7c600e9c400ea3e00eb3b00ec4800ecf5
+00edca00eef500f03900f17300f2a900f3ad00f49000f4a300f4b700f5b200f65e00
+f6e000f7a500f94000fb1400fcc200fdd400fef400ff890100250101120101ac0102
+cc0103ad01049e01052f01061f01069b0107010107640108b20109fe010b1c010b84
+010c0b010c77010d01010dcd010e37010f21010fae010fc90110b801120a01134701
+141e0116040116920117150118140118fa011981011a09011b1b011b45011b78011b
+f2011d37011d50011ddd011f5e01202a01212901226601236b0125410126300127b6
+01285a0129cc012bac012d94012ed101306201325501328a0133370133e60134d101
+35870135b10135ce0136500136e101377d01378c0138940138e30138fe0139310139
+4401395701399f0139ec013a3e013a8f013aad013acb013ade013b01013b10013b1b
+013b5c013b6e013b82013b95013ba3013bb6013bc9013bdc013bfa013c08013c5001
+3c96013ca8013cbd013d0d013d3c013d50013d61013d7b013d8d013daa013dc5013e
+13013e61013f13013f27013f4c01409101411101412c01414b01416c01418b0141a6
+0141bb0141d50141f401421101422f0142770142bf0142dc0142f901431201437801
+43e101449d0144e901450101453301456a01459e0145d101461a0146610146930146
+9b0146a30146b601470401471401473201474601475701476e0147800147990147a8
+0147b10147f20148120148750148940148a70148b90148ca01492401493501494801
+495b01499d0149de014a16014a49014a8f014aa0014ab3014b01014b2b014b5c014b
+8a014b9d014bb9014bd1014be3014bf4014c05014c17014c34014c8e014cb7014ce4
+014cf7014d0d014d26014d38014d44014d5f014d79014d8a014d96014db3014de601
+4e2c014e74014e97014ef2014f7b01508801509d0150af0150c10150dc0150ed0151
+3c01514e01516b01518001519a0151d60152ef0153b10154410154950154ca015511
+0155570155840156150156340156530156bd0156d00156e101576801582401588b01
+58960158a40158b10158be0159050159360159660159ec015a3e015aad015ae5015b
+70015c13015cc4015d72015eac015f27015f860160120161160161630161960161a8
+0161bc0161de01620101622401623301625801627801628c0162d30162f501631001
+633301634e0163820163b70163d00163fd01642701646501649b0164b70164d00165
+4301655601657501658401659f0165bb01670c01672801675001677d0167a20167d3
+0167e601688c01689e0169be016a85016aac016ad7016b0a016b3b016b6a016b8501
+6bc3016be9016cd3016d7d016e14016e3b016ee6016f08016f62016f750170970171
+2d0171ed0172b90173910173ac0174510174730174ec0175470175ca0175e501766a
+01775f01783501784e01787d0178ac0178d00178f301791401799b017a3f017a5301
+7a6e017b25017cf3017d84017e80017f5b0180590180ed0181770182810183070183
+8d0183b301843d01849601852a0185a20185b60185d901867a0186d901873c0187c4
+0187d701884801885b01887e0188a20188e7018934018a3b018a70018b33018b6f01
+8b82018ba9018c64018d60018e57018f5801901901903901905d0191480191610191
+9e0191cb0191f50193820193b80193e701940c01942301944801956801964b019666
+01967f01969b0196c30196f001970401973501974801987c01988e019962019a5b01
+9b59019caf019dd0019e04019e2d019eb5019f24019ffd01a02401a0e501a11801a1
+4101a26201a28101a2a401a2c901a2df01a30601a36f01a42901a55601a56f01a58a
+01a5f901a62501a63a01a6c001a6d001a79501a7a401a83101a84901a92501a9ed01
+aaa401aacf01aaf101ab2701abd001ad3601ad5c01ad9601aef001af2101b03501b0
+6101b08301b0ad01b0d001b1b101b2c701b46b01b4df01b4fd01b51d01b5e101b5fe
+01b61e01b70301b7b101b92e01baf001bc9f01bddc01c02001c1e001c2dd01c3d601
+c56901c6f701c7e901c8bb01c9db01cb4101cb7801cca201ccc301ccdf01cd1301cd
+4301cdbb01cedc01cefd01cf1d01cf7001d00b01d09501d18c01d30401d3c601d48d
+01d50f01d60701d74301d88701d9e501dbaa01dc8c01ddad01df2001dfea01e19b01
+e2c401e41401e55d01e6ba01e80b01e8e501e9b201eb5001ec8801ed7f01ee6b01ef
+d001f11601f23301f30401f38301f40101f41401f4d501f62f01f71501f86201f990
+01fa7501fb4601fbf501fca801fe0201ff1b01ffd60200b90201610201f802032702
+04420204550204930205b4020734020857020939020a04020b29020c4e020cfb020d
+ae020dd7020e10020e3d020e7c020ec9020efc020f42020f77020f94020fb5020fe4
+02101902105d0210930210cb0211090211200211970211b70211dc02120402123602
+12630212950212cc02130b02138c0213e90214890214db0214fa02151302153a0215
+5d0215810215a30216b00216e90217c40218460218c602190902192102195702197d
+0219a50219b60219ce0219f5021a08021a16021a25021a34021a61021a72021a8602
+1a9e021ab1021ac4021ad5021ae4021b28021b7d021ba6021bbb021bde021bfb021c
+98021cb3021d10021d99021e35021e48021e94021edb021f6a021fd902206d0220cc
+0221290221830223ce0224710225280225bf02269602270e02274e0228230228bc02
+28ec022917022933022947022964022a01022a1e022ad3022c25022d3e022d5d022d
+8b022e40022ef502308602322702327e02331802347e0235c902365b0236980236ee
+02378b0238040238770238980239010239d9023b65023c8c023e78023e9f02403502
+41b80241e40242010242240242370242610243f70244110244d60245850245b30245
+f302463202470302474302476d0247ac0247d50247f902482b0248510248940248bb
+0248ff02492402496302498d0249d30249f4024a2f024a82024b43024b97024c6302
+4ca6024ccc024d20024d5a024dd8024e21024ef1024f14024f42024fb1024fd60250
+0302502a02505202507c0251db02533c0254e802551102566302568c0256cc02577c
+0257b70257df0257fe02582902584d0258760258970258c90258ec02592702595302
+59830259a20259ce0259e9025a0f025a40025a6a025b90025bbc025bf0025c1d025c
+47025c76025ca1025ccc025cf6025d1d025d43025e38025f18025f9e025fef026025
+0260ec02612c0261f40262320262670262a60262de02631102633d02637102639d02
+63dc0264140264470264730264c00264ff02654d0265880265da02667d0266d60267
+8a0267ea0268320268700268940268d30268f902693a0269570269930269ad0269d4
+026a08026a34026a6a026a86026aad026c09026ce6026d3f026e00026e26026e4b02
+6e6a026e89026ed6026eee026f08026f21026f45026f6a026f88026fa8026fc8026f
+e902701102702e02705e0270810270a30270c10270ed02711202714402716f02719d
+0271c50271ec02721802723e0272630272a002732f0273de0274e20275b602764202
+76690276a00276cc02770a02774002781b0278c302798a0279be027a01027a4a027a
+93027ac2027aff027b3c027b8c027bc9027cb5027cec027d39027d8b027dff027e33
+027e79027ec1027eeb027f37027f66027fb9027ff20280c40280fe0281c902820302
+825c0282990283700283af0283ff02842f02845602847e0284a00284cd0284f60285
+1e02854d0285790285b10285e80286920286c90287020287820288340288720288a3
+0288d102890202893902896a0289a10289dd028a20028a62028bc2028bf8028c3402
+8c57028c84028ca9028cde028d0a028d37028d63028d90028dbc028df5028e31028e
+72028e9d028ed3028eee028f04028f270290760291d30291f602921e02924602933a
+0293ef0294410294a302956702962c02966602969f0296df02971e02975902979802
+97fa02985f02988d0298ba0298f00299230299550299870299e1029a3a029a73029a
+ac029aed029b2e029b6f029bb4029c01029c4e029ca3029d00029d90029dee029e26
+029e5d029e9b029ed6029f25029f69029fcb02a02902a05102a07902a0ae02a0e202
+a11702a16802a1c002a21802a23c02a26002a28a02a2b002a2db02a30302a35302a3
+a002a3c102a3e202a41002a44402a4d902a50702a55a02a5ac02a5d602a60002a631
+02a66402a69a02a6d202a6fe02a72a02a75f02a79302a7c802a7fd02a82402a84c02
+a87b02a8ac02a8e302a92002a97402a9c502a9e702ab1a02ac5a02adb202addf02ae
+0c02ae4002ae6c02aef902af2d02af8502afda02b01902b05802b09f02b0f502b142
+02b18902b1f202b25a02b28d02b2c002b2f002b32102b34f02b37e02b39802b3b302
+b3d702b3fb02b41d02b44002b46102b48202b4d302b52102b57902b5cd02b65002b6
+a402b71e02b79102b7d602b81a02b91202b95c02b9a602b9f002ba5c02bac902bb08
+02bb4a02bb9502bbd902bc3502bc7f02bce902bd5202bd9202bdd202be1c02be6502
+beaf02bf1902bf8102bfeb02c02a02c06102c0a202c0d902c19e02c1e002c24702c2
+a802c2f902c34a02c3a302c40b02c46a02c4c302c53b02c5b402c5ef02c62302c664
+02c69e02c6df02c73002c79802c7c102c7e202c80202c82202c85202c85c02c86e02
+c88102c8ad02c8ec02c92002c94d02c98302c9d702ca3502ca7c02cac302cae502cb
+0702cba402cbbf02cbda02cc1e02cc4002cc5d02cc8d02ccc202ccfb02cd5b02cd7a
+02cd9602cdb102cdcc02cde602ce0102ce3c02ce6a02ce8d02ced902cf1702cf4702
+cf7702cfb802d01802d03702d05302d06f02d08a02d10802d12b02d15002d16302d1
+8f02d1b402d21102d24f02d2a002d2c302d2e502d31a02d34e02d38e02d3a202d3ac
+02d3ae02d3b102d3b302d3b602d3b902d3bc02d3bf02d3c202d3c502d3c802d3cb02
+d3cc02d3de02d3f002d41102d43302d45602d47902d49402d4b102d4c602d4db02d4
+ef02d50b02d52902d54502d56002d5e102d65502d71302d73402d74b02d75902d76f
+02d78d02d79d02d7a002d7e802d86302d87702d89102d8ac02d8bf02d8d802d8f302
+d8fe02d90902d99e02d9c602db7202db8402e09502e0ac02e0ef02e12502e15b02e1
+ab02e25802e28902e2a802e2d402e2f802e31002e33102e34d02e37a02e39a02e3b6
+02e3cc02e3ec02e3f902e40802e4a002e4bf02e54402e5e802e66302e77e02e79502
+e7b502e7f102e81e02e83e02e85802e86c02e88a02e89602e8a402e92f02e9e302ea
+0202eb4602ebfb02ec1402ec2902ec3c02ec6002ec7f02ecaa02ecce02ecef02edc4
+02ee6002efd002f1b502f2ef02f33302f3cd02f56402f6e502f75202f7e202f8e402
+f9bb02fa1002facd02fbe602fc9802fd9902fe1302fefd02ffbb03006303018a0302
+9503031e0303b40304b40305660306d40308170308b20308dc0309ae030a02030a2b
+030a40030a63030a80030b5f030c5f030c9f030cf4030d1f030d61030da2030ddd03
+0e12030e64030eaa030f04030f65030fb8030fd30310540310e50311b60312a20313
+370314250315230316700317db031907031a6e031be0031c74031d35031dbd031e94
+031eb4031fbd0320e103226f03227e03242603252003263503288b03289a032ae403
+2d70032d84032d99032dc7032f5b032faf0330b70332090332650332cd0333060333
+4203337a0333b403342e0334ac03357d03364e0337230337f40338610338cd03390d
+0339b1033a5f033a70033a7e033a90033a9f033abb033ad5033b72033c3f033cdd03
+3d25033d6d033db5033e00033e79033f0303401b03413d0342550343690343950343
+e00344b80344e103457c0346e10347290347730347b80348ca03490703494e034a62
+034aa0034b64034c24034c86034c93034cf6034d5e034d73034d87034d99034db603
+4dc9034dd7034e07034e34034e8f034eea034f03034f290350440351a20351b50351
+fa0352170352880352ad0352d103531a03536503537a0353970353be0355af0355c7
+0355db0356b4035761035865035a1a035a38035abb035adf035b79035bc3035c0e03
+5c51035c62035d15035dcc035eaf035f8e035fc2035ff703609903614603621d0362
+a10363f60364a60364c30364e00364fd03650e03652c0365920365f903660c03662e
+0366500367aa0367dd0367f703680e0368ee0369cc036a37036a89036a94036aa303
+6b14036b3b036bc9036c57036c6a036cf6036d84036d98036e28036e43036e51036e
+76036e92036e9f036ec3036ee4036f66036f8b036fa3036fd003704f03707c037094
+0370d20370f003723e0373fa0375a603772a0378960379e6037af0037b86037cd303
+7d13037f910381570383110384a00386700387ca038a65038b05038c60038ea2038e
+c5038ee8038fcd038ff803901b0390dd03915a0391f40392740392a50393760393a1
+03948e0394c00394ea0395ba03963f0396e00397b40397e5039b0d039ccb039df103
+9f5403a1b003a3d503a57503a81503a96b03a9e303accf03ae3d03afad03b1a103b2
+1603b3af03b48103b6b803b85703ba1703bbc103bd8903bf0703c24503c4ae03c699
+03c7c003c7e803c80a03c8c603c9a903ca7903cb9203cc8603cd0a03cd8d03ceff03
+cf2103d0ad03d18a03d1b303d28403d2ac03d34303d3c403d44803d51c03d65203d8
+5203d9a303da6303db2003dc5a03dcb103dd1903ddce03de4103dea103def903df3d
+03df8f03e02403e0b303e21403e3ee03e5b403e76a03e8f803ea4e03eb7b03ec2003
+ed8603f00d03f04303f05003f06903f07803f09403f0a203f0bd03f0cc03f0e803f0
+f803f11503f12503f15c03f18103f1a703f1c203f20f03f21803f23303f26503f296
+03f2c803f2ec03f31403f32b03f34203f37903f39f03f3f203faf803fbd103fd4103
+ff2c03ffc004015b0402f80403ba04042c04048b0404eb04057b0405e204064c0406
+b70407560407da0408ad0409720409d7040a4f040af1040b7f040c3e040ce8040dbf
+040e43040eff040f7104101a0411460411b704121204128a0412cd0412f404135704
+13d70414a404158c0415e70416460416f304185a0418ce041b05041d9f041feb0420
+7a04212904229d0422cd0424cf0425a00426490426d004276c0427e2042ee4042f35
+042f960430050430700430c704311a0431570431a10431f004322f04324004326b04
+32980432a70432b60433460433b80434e404356904366e04383e043988043a5d043b
+0b043c38043d54043dd3043e4b043f9e04409704414e0441fd0442af044326044338
+04434c0443680443840443dd04441c0444780444d904468504479204495f0449b104
+49dc044a06044c2f0454650455890456a50457cc0457f304581a04585a0458a3045a
+a3045ba8045f490461260461b50463f504667d04679e0467b90468760468990468c8
+0468e60469080469310469540469800469a9046af6046c58046dfc046ea704708b04
+70c304710404717a0471900471c10471fe04722004724904726304728f0472bb0473
+5204737e0473ab0473d00475810476dc047976047b17047dc6047f8804815204825d
+0484290485620486f40488960489c3048aeb048bba048d3b0495230495ed049c2a04
+9d75049f6b04a0ae04a17e04a34504a57a04a74604a81704a92404aa0604ab0c04ac
+b104ad8b04ae8d04aea904af6204af7704af9404afb904b08804b0b504b19d04b1b2
+04b1c804b2fc04b30f04b45104b50c04b52a04b5c504b6cf04b72604b75304b78304
+b79904b89e04ba8d04bbab04bbc204bbe004bbe204bbf404bc1604bc3804bc5b04bc
+9104bcc204bcf404be9604bfb104bfdc04c00704c03204c06f04c08a04c0a504c0c0
+04c0e904c10a04c14304c16804c18d04c1b304c1fc04c22b04c31304c44504c46204
+c47f04c49c04c54a04c56804c68304c7cc04c7ed04c88304c96304cb5704cd8d04cd
+ae04cddd04cf3904cf5504cf7504cf9d04d10d04d1f204d23204d24e04d2f204d31e
+04d34d04d45604d48204d4b704d4f104d52e04d66c04d6ac04d7b604d87304d89c04
+d8c004d8e604d91104d93a04d95d04da0804da4d04da8c04daac04db4404dca104dd
+4904ddfc04deb704df9d04e0ba04e12804e1f604e33004e47504e49904e4bd04e4f2
+04e65804e78504e85204e93004e9c904eaa004ebc104ec6b04ed0004ee3f04ef2204
+efd604f0a504f12004f1b004f2f604f40304f41e04f4df04f50504f51e04f57604f6
+1b04f85404f91504fa2204faa304fb1404fba104fc2604fca704fd2604fde904fe4c
+04ff0404ffc905000d0500930500a90500da05018c0501ae0501d70501f105021d05
+024905026f0502ac0502fe050310050472051202051fa40566ea0567090567210567
+4e0568120568690568820568ae0568d80568ed05690005692405694305696e05698e
+0569ab0569cf0569f0056a13056a26056c10056d17056dc6056df9056e21056edf05
+6f8a056f9c056faf0570120570250570390570f605717a05718e0571a20571b40571
+cb0571e10571f205775005783a057924057c04057de30583ff058752058888058bac
+058e9c059495059f6805a3bd05bf3805c03805c12905c38005c39705c4a105c5b405
+c62f05c6af05c72005c79c05c8bc05c9d705c9ef05ca1205ca2005ca2e05ca3d05ca
+4c05ca5e05ca7405cb4705cc8e05cda805ce9705d00405d16d05d23805d37c05d408
+05d55605d64005d6ee05d85c05d9ca05dae205db4a05dc3e05ddaf05de4a05df6305
+e02005e18305e37905e4b105e5b705e6b205e81b05ea9205ebd52c8bbdf8e9be018b
+bdf824bd03bdf8ef15f73efb92fb3efb9205a95e15f73ef792f73efb9205fb20f7bf
+15f73ef7928bfc9005fb5cf7bf15fb3ef791f7e88b05fc38fd1b15f888f94efc8806
+0efbed0efbc781f5f8c67701e6f503f724f92615200a56fcfb15210a0efb97f83ff7
+6e01cae1b3e103f76bf83f15220afb128a15220a0efb16f754c0f707c001f7abf789
+15fb068b9ef707f7058b05b116ea8b93c02b8ba8f747658b6ffb47fb068ba9f74765
+8b6efb472e8b8356e88b79fb072d8b058356e88b6ffb46b08ba8f746f7048b70fb46
+b18ba9f746e98b92c02c8b050efb16fffff7e666ff00226666ff0227b334ff001fe6
+6601becef771d903ff00cf199aff016eb33415ffffd2ccccff00164cccffffd4199a
+ff00214ccc8bff0035b3348bff00339998ff002e4ccdff0031999cff00366666ff00
+00cccc08ff0013999afffec9999a15ff00323334ffffeb9999ff00328000ffffe233
+338bffffb1999a8bffffb5b333ffffd6b33463ffffb73332ffffff4ccd08ff009219
+9af8c515ffffd08000ff00063334fffffbe666ff000eb334ffffc1b334ff00036664
+08ff0004b332ff0055333405fffff333348b7cfffffe8000fffff6cccdfffffc8000
+08fffffb9999ffffb0666805ffffa53334fffffce664ffffb16666ffffc480008bff
+ff9fb3348b34ca5ed36cff00053333fffffdccccff00058000fffffdccceff0005b3
+33fffffdcccc087dffff00e66705ffffbcb334ff0009999a5fff0028199affffede6
+66db808f818982868f438f74965dff0033b3338bff00198000ffffefe666ff003d4c
+cd8708fffffb199affffa5cccc0595ffffffffffff00139999ff0000e667ff00074c
+cdff0004333308ff0004999aff00544ccc05ff0027199aff00013333ff0025e66695
+ff001de666ff0012b333c0acadc58bc68be44eb748a8fffff4b334ff0004e666ffff
+ef8000ff0005b334ffffedb332ff00074ccc08ff000c4ccdff00dfb33205ff003eb3
+32fffff2b334ff0016ccceffffcde668ff00104cccffffcbcccc968b978a939288b8
+87a581bc080eb57faaf762aabaaaf72ab09eaa01c4c1f719acf0c2f718ac03f845de
+15230a549a15240a7df83b15250afb91fb0f15260a0ef70281c155acf806acf750ac
+12b6ddbfd5f71fd0f750a0137ff78ef7e6159676dbfb08c4405a486767448b4c8b55
+ae8bed088bd2a1c1f2c408f73ffb8815a8660513bfba4ab089aa8bae8bb8a7a2d1ff
+fffaccccff00056666fffffb3334ff0004999a808b7764747c6a8b7b8b6d9f6cb608
+67bd05ff0027999ac4ff00167ffeb3ff001ae668bbb9ddff0006ccccff00053334ff
+003d3334ff0003cccc91918ba08591778a6d8a698b698b628c778c85858b76918508
+ff00361998fffffd4cccff000ee668fffffab334ffffda666845ffffeee664ffffe0
+199affffe7ccceffffd53333ffffdbe666ffffcab3335dc951de79aa08879305debb
+cdcc8bc208ca51b845275544501e8b659964b04bfb184156488b3c08137ffb0ee05f
+f61ee08bc2b4b9ca08fb18f7cf1571bc7fb18ba208cdbca8a5b4a26d5e1e8b676657
+4b61080efc29f83ef76e01c0e103daf83e15220a0efbbdb7de03b7f790158b5e8ffb
+7bf764fb48958d93928e936ab1fb09f71e8bf79b8bf79bf70af71eabaffffffc999a
+ff000a4cccfffff9ccccff0006e668fffff4999aff0000ccccfb0b252efb3b8bfb4e
+080efbbdf73fde03f792f790158bb887f77bfb64f748818983848883ac65f709fb1e
+8bfb9b8bfb9bfb0afb1e6b67ff00036666fffff5b333ff00063334fffff9199aff00
+0b6666ffffff3333f70bf1e8f73b8bf74e080efb76f73cf8b715270a0e5ef776bdf7
+4e7701f78ebd03f78ef84715280a0efc0bfb19a3f703e801f717b203f3ea15290a0e
+fb95f773c701b3f79603f7a3f773152a0a0efc0b81f501c4f503c4b615210a0efba4
+f91a77019af7aa03f7b9f91a15628bfb81fd55b48b050efb1681aef8baae01b2e2f7
+65e203f77cf8d3152b0a87fcdd152c0a0efb1689acf8d57701f767d803f7b4f70e15
+f7ef078bc7ff00014cccc8ff0001b334988bff0004ccccfffffd8000ff00003334ff
+fffc80008bffffc8b333ffffddb334ffffcb4ccdffffe74ccc3362ff0001999affff
+f4999aff00046666fffff6800094fffff9e666ff002d80009eff00168000919e8b08
+ff00108000ff0003800073691ffbda078b387086458885858b769185bc8cff0023cc
+cd8cff003633338bff002f999a8bff001866668abd8a91918ba08591458e7a908bde
+080efb168bccf81576f726ae12c8d6f74ee370a813f8c8f868152d0a13f42e0a13f8
+2f0a0efb1681aef7b3abf77bae12bad4ff00b2199aff004e3332ffffccb334e313f8
+f76bf8d315300a13f4310a13f8320a0efb1689acf721baf81b7701f7a3d703f7a3f8
+8f15330af733fbb415340a0efb1680aef7d1bdf722ce4ed312f7d3e413e8f7d3f751
+15350a13d8360a13e8370a0efb1680aef7c6aef770a501b7def767de03ff00873333
+f7c715380aff0009199aff00244ccc15390a0efb169376f8b8cc967712beab13d0f7
+3ef8ab153a0a13b07b970513d03b0a13b03c0a0efb1681aef8baae12b9ce61d2f749
+d15cd413d8f77ef8d3153d0af73331153e0a13e43f0afb3bfc6015400a0efb167fa5
+f770aef7c6ae01bddef767de03ff014fccccf7b815410afffff6e668ffffdbb33315
+420a0efbfb9ef5f745f501d1f503d1f7f715210afbaf04210a0efbfbfb19a3f703e8
+f763f512d1f571b213f0d1f7f715430ac0fb9815440a13e8450a0e5ed4f7df01f71e
+f78315460a0e5ef723bdf708bd01f864f7c915470af819fb3a15470a0e5ed2f7df01
+f830f78015480a0efb3481f5f8a6ac12b9cfa9f546ace7de13ecf706f8d015490a13
+f4a9fca515430a0ef7c0fb32acf72cb6f7c9aaf73eaa01c6dbf71ad4f73dcff744db
+03f8cdf7d0158b697a587e6c6c425a52688b4c8b7cb78bbb8bc99ccbbebea9aab694
+9c8baf8ba8728b650899fb86158bff0006800092ff0021800091a608c7f7967c9056
+7e86730581a5699c6a8b0821fb13fb06fb2363a137ef1fae8bc1a8b7d5088d8a0583
+7284748b7c087b9272a8f76ed1f721f706f74ffb2ff722fb6bfb75fb4dfb41fb6bfb
+69f730fb3cf7831ef7058bc7aec7b9087e9d0555604d74368b08fb963ff76cf72af7
+81f73cf1f72cf711f74328fb62fb3a4c5c2589828d951f0eef89acf766b5f80b7701
+f79bf7af154a0afbb1fb60154b0a0e8489acf7c1adf78bad12f5e0f76cdc69e813f8
+f753f8ba154c0a6904d00613f44d0a60f8a3154e0a13f84f0a0ebe81b4f8e2b001b0
+e6f84aac03f7f98115500a0ef589adf8d9ad01f5e0f807eb03f753df15510a60f8c5
+15520a0e6589ac6cb2f7b0b1f788b36cac12f4e0f74aacb2ac9bae133780f7adf7fd
+15530a13af80540a136780550a13a780bbdb898b1f99bd9acd93befffff59998ff00
+05e666fffff48002ff00024ccdfffff2e666fffffccccd08137780560a0efb0289ac
+f7b8b1f788b36cac12f4e0f74cacb0aa13eef7aff7d715e08b8e748e5e9185a08b91
+918aa48aff001cb3348bff00224ccc8bff002180008cff001a80008ca58591768b85
+858854887e368b082ef74806c19795b71eb806f58ba463a146978b968d938efffffa
+ccccb4fffff0e668ff00606668fffffe9998ff00079998ffffff999aff00024cccff
+fffeccceff0000b334fffffd99988bffffee8000fffffc9998fffffb3334ffffff66
+68ffffe74ccc8b08ffff00b3340613de570a0ee581aff783aff7d5af01b0ebf821e0
+03f80df92615fb3bfb41fb17fb70ffff4c3333f710ffff76cccdf7531ff70a8be8a4
+cfc5809486938b9608f708078bff002333339cff0009cccda88e91918ba38591738a
+728a638bffffde80008bffffd180008c5f8c85858b739185ff0036e666fffffbcccc
+ff001b199afffffc4cce8bffffd7e66608fb2d07696b4885558b08fb3237f73df718
+f743ff00718000f70cff007480001ff7258bb438a535ff000b4cccffffff4cccff00
+0a66688dff000b4cccff0004b334fffffd8000b5fffffb8000b37bd34f9566aefb03
+8b080ef71b89acf7b6b5f78fac01f5e0f7eae003f8fef70e15580a0efbbe89acf8db
+ac01f5e003f753f70e15590a0efba5fb40b8f979ac01f721e003f776f89f155a0a0e
+b589acff0115e666ff00266666ff010ab334ac01f5e003f753f70e155b0a0e4889ac
+6cb2f8d3ac12f5e0f7afac1378f729165c0a13b85d0a13785e0a13b85f0a0ef78896
+7693acf8dbac121360ff0296b334f70815600a13a0610a0ef3967693acf8dbac12f1
+bcf829bc1378f8c0f89415620a13b8630a0ef681aff8e8af01b0ebf849eb03f7dff9
+0215640af7e3fbb915650a0e5589acf78fadf7c2ad01f3e0f775e803f751f8be15a8
+9aaed3d0d074fb13fb00575f2a1e728b638d808e0836f75e15fc25078b387a864588
+85858b769185b88cff00314ccd8cff0023b3338bff002366668bff003a999a8abd8a
+91918ba085913d8f738f8bde08f73e07a184a388ae8b08f74ac2f70be0c664f6fb4d
+1fffffd9b3338bffffc54ccd84638bffffdb4ccd8bffffcbb3338c638c85858b7691
+85d1889c868b38080ef6fb65c4b1b7c7adf8ecad01b0ebf849eb03f7dff90215640a
+f7e3fbb915660a0e8381aa74acf798adf7b9ad12f3e0f76ce7133cf7a4f8fe15670a
+38fc8415680a13bc690a137c6a0a0efb0281aff8eaad01beff00476666ff00ed999a
+df03ff018a999af90b15ffffc6333293ff000233349effff9e66668bffff9a999a8b
+32488b218bffff96999aff00568000ffffcfe666e3ffffde8000ff003cccccffffe8
+e666ff0049b334ffffe3e6678bffff9e33338b3affffd2cccc61ffffb033348bffff
+a2999a8bffffc3e666ff002a800075ff0063800008fffff3b3338ffffff56667ffff
+fe199afffff66666fffffae6668f3e8f71975aca8bff001be66674ff0058b3348bff
+002d80008bff002b199aff000b199aff0022ccccff0015b333ff00398000ff0023ff
+ffff00248000ff003d999a8bff003f999a8bff006a6666ffffafe666ff002e999aff
+ffad999aff001ee66608ffffc4cccdff00163334ffff9c1999ff0025cccc8bff0054
+199a8bc3ff0032999ac3ff003ae6668bff0061199a8baa4d9f49ff000a8000fffffe
+333498ff0000cccc9492fffffc8000bb87a7fffff5999ac0080e8d89acf8d3b2018e
+adf778e0f763ad03f7f2f70e15f81207cb95b1af1ea106d68bba719c3e968b998c94
+8f84b986be8ab88b8c898d8a8b6988fb03863c8b0835063e8bfb0a90658e898b8989
+8b8a875e8157805b9587978a978b9fdbb9a5cd8b08bc06b095654e1ffc15078b387a
+863b8885858b769185bc8cff0032e6668cff0028199a8bff002666668bff0032999a
+8abd8a91918ba085913b8e7a908bde080ecd81b4f8dbac01e2e0f7f6bc03f740f89f
+156b0a0ec49476f906ac01f854f8fa156c0a0ef7f89476f906ac01f9bef8c9156d0a
+0ecc89acf8dbac01f8aef1156e0a0e7789acf8dbac01f790e003f7e5f70e156f0a0e
+948bb1f8c8b6937712c8a9f85caa13d8f8bb8915700a13b8710a13d8720a0efb83fb
+55a9f9d8a901f700ce03f700fb5515f7680691918b9d8591fb1e96849a8be208f8f7
+078be2939af71d9591918b9d859108fb68060efbc8f9597601c2f94e155f8bf77afd
+7eb78b050efb83fb54a9f9d8a901f749ce03f78cf95415fb680685858b799185f71e
+80927c8b3408fcf7078b34837cfb1d8185858b79918508f768060e3ef7eef7c401f7
+04f7bb03f797f8e515730a0efb01fb2eb701f870fb0215fc660683838b6f938308f8
+660693938ba78393080efb5ff8aef73501ebf73203f746f94f15740a0efb1e81bb5b
+b4f80bac12afde4bd8f735d91374f7b9f77d15750adafb381513ac760a1374770a0e
+2581adf807b7f75ea9a67701d9daf769e103f742f7ff15780a84aa15790a0efb3b81
+bcf803ac01b0e1f74de203f822e6157a0a0e3281ba84a6f7efaef75ea9a67712b2e1
+f770da13bef7edf710157b0a80fffef84ccc157c0a137e7d0a13be7e0a0efb2881bc
+f765adf70eac01b0dff75be103f710f7ae157f0adcfb5415800a0efbb189acf7fbb2
+f77fad01ebdaf71fdc03f743f70e15810a0e2cfb82b0f751c8e2aaf785aa12abd062
+dd41c0f75adb9dc213f580f7d3f7ab15820afb4ffbb51596889b89988baa8ba78e99
+8bbd8bb58aa87bb275977d8b7108432165311e13f9806737a8cf1f8bad8da4a8ae08
+f7ccf821159e9d9d9fa0789b701f718b5b7a71697f936a9f508b0813f58032394f2f
+1f8b55a36ca7700813f380830a13f980556b6f5d8b600834dd70d8f71bf726ccf700
+1e8bab7ca46ea364ab458c668b798b728973887c8a818a868b0813f3806e6899b61f
+8b9f91a0979ca37da784b28be38bdcc28bed8bba7da66ea992959f99988b928b9288
+9182088f839881968b080e5289acf7f8bff75ea9a67701e3daf766da03f73bff011d
+e66615840a0efbd889acf7f6a7a877f711ef12e5ef33da13f8e5f8eb15850a13f4e6
+fc7115860a0efbd7fb73b7f8c8a7a877f711ef12eeef35da13f8eef8eb15850a13f4
+99fbae15870a0e3889acf746a4f738acf766a9a67701e1da03e1f70e15880a0efbdf
+89acf8f6a9a67701eada03eaf70e15890a0ef75789acf7f8bf01e9daf753daf753da
+031438f73ef7fa15fffffeb333ff001db33489affffffb4ccdff000a4cccfffffde6
+66ff0004999afffffe199aff00036666838b6f807182468289858d7b8d85c1869686
+8b5108fb57078b397e86548785858b769185a98cb18cb38bb38bff001ecccd8aa98a
+91918ba08591ffffcd333390808f8bdd08f738078ba094ff000c4ccc93ff0008b334
+ff0027999aff0026b334ff00258000ff00144cccff001ee6668b08b1a773481ffb42
+078b398386558786858b769085a48cb08cb38bb38bac8aa48a90918ba08691598f82
+908bdd08f733078b998b998a97bbc0b898b28b08b1a175481ffb44078b3981865787
+86858b769085a48cb08cb38bb38bae8aa78a90918ba08691548f82908bdd08f73207
+e47cd1331effffcccccc8bffffc24cceffffed3334ffffcbe6665488fffffccccc85
+8689ff0008999afffff68000b4ffffd98000ff00206666578b518bffffcbb333ffff
+dd999affffd64ccdffffd16666fffffb6666fffffae666fffff9199afffff9199aff
+ffff800097080e5689acf7f8bf01ebdaf760da03f74cf7fa15fffff9e66684fffffa
+6667fffffd999affffffb333ff000966668aa6fffffdb333ff0026b334fffffb4ccd
+ff000a4cccfffffde666ff0004999afffffe199aff00036666838b6f807182468289
+858d7b8d85c18696868b5108fb57078b3981874f8685858b769185a98cb38cb38bb3
+8ba98aa98a91918ba085915890818f8bdd08f738078ba094979394b1b0b8a1b28b9f
+8ba07e977495778d708b6d08fb2c078b398187578686858b769085a98cab8cb38bb3
+8baf8aa98a90918ba086915390808f8bdd08f729078bc287bb74aa7aa16c97688b5a
+8bffffc84ccd7effffc4b33347080e3081aef80fae01b4e1f78ee103b4f761158a0a
+f759f75b158b0a0e3ffb7eacf753adf805b901dbdaf780e103f743f7df158c0a78b0
+15fffffe8000a9fffffe3333ff0019b334fffffb4ccdff000a4cccfffffde666ff00
+04999afffffe199aff00036666838b6f807182468289858d7b8d85c18696868b5108
+fc3f078b3880864e8885858b769185ae8cb08cb38bb38bbb8aac8a91918ba0859144
+8f808f8bde08f700078b98ff0003cccdfffffeb333ff000a3333fffffbcccdff0018
+8000fffff6199aff001ee666fffffa6666ff001f999a8bc38bbd9cb4b2bab9a6c98b
+dc8bf540ed258bffffd180008b58ffffe18000ffffd88000ffffd3800008fffffa66
+66fffff9b334fffffb199aff0000b332ffffff8000ff0009999a080e2ffb7eacf753
+b7f807ad01aee1f775da03f7d6ff01706666158d0aa3fffe20999a158b3880874e88
+85858b769185ae8cb08cb38bb38bb18aac8a91918ba085914e8e808f8bde08f8a407
+998796801e848bfffffa199afffff84cccfffff7e666fffff4b3347e7987887fff00
+07ccccffffe06666ff0014800064ff0008b334ffffd5999a8b08fb0e3127fb182eca
+fb10f7241fa68bff0020e666ff0005999aff0011199a95a2ff000d66668f8d8b7608
+0efb7389acf7eec901efda03f744f7fa15fffffe4ccdb3fffffe6666ff0019b334ff
+fffb4ccdff000a4cccfffffde666ff0004999afffffe199aff00036666838b6f8071
+82468289858d7b8d85c18696868b5108fb57078b387f874d8785858b769185ae8cb2
+8cb38bb38bb98aae8a91918ba0859145907f8e8bde08f71f078ba597a2979d969ba2
+ac978b948b94fffffd999aff0007ccccfffff5b332ff0007999a81ff000b3334ffff
+f2b334ff001166668b08a3a2a4a4ff0013199a79ff001ce666611f5c8b625f746485
+80fffffb333393ffffffcccd90080efb6181acf813ac01c9d2f721d703bbf71e158f
+5a8e5c8b61958d958c908b928b918b9289a684a687b08bc38bf2a68bee8bff00444c
+cd5aff0027b33347ff0019333308ffffc3cccdff00164ccdffffd83333ff000f8000
+8bc28bb4afa2ad8ba18bc583983691859f8c91918eaf8db08cac6c905b99578b0841
+485b4b1f8b42ac6cd86bde699e768b608b5a5b76668b648bffffea4ccdff000d4ccc
+fffff5b333ff000ab33475a280b785a48591788a8585080efbab81c2f7edb201e4da
+03b6f841158e0a0e4b81baf7fdac01e3daf758da03f76d8115b28bba9fbcb3908fff
+00094ccc8dff0000b33484ff00028000ffffe68000ff00088000ffffde80008b8b93
+88ff00048000ff00008000ff00068000ff00028000a19dae9ac89291918b9a859108
+4b90829e8bbc08f75407a98fd48b1e8e888e861e868a7c8a7c8b6b8b678c698c8585
+8b769185bc88987f8b4908fb55078b7889837d7f666b657b728b086d5999e41ff74a
+07a98fd48b1e8e888e861e868a7c8a7c8b6b8b678c698c85858b769185bb8799808b
+4a08fb540746a948ee1e0e299476f82eac01f7d9f822158f0a0ef72c9476f82eac01
+f75ff8221591918ba085916d8a688a678b658bffffe533338cffffe5cccd8c85858b
+769185ff002f199afffffb3334ff000ae666fffff5ccccff0015199a5708ff0082e6
+66fbd705917d9385958b948b9391929b08f0f78af2fb8c05917d9385958b948b9391
+919a08ff00829998f7d105ff00106668ff0028e6669cff001c199abe8e91918ba085
+91778a758a6d8b6d8b618c6d8c85858b769185d687fffff5b334ffffe3199afffff1
+e664ffffdce66608ffffac6668fb6405817287ff00003333fffff7ccccff0014cccd
+08ffffa9b334f76f05ffffed8000ba8d95c08f91918ba085916d8a638a6d8b728b6a
+8c6d8c85858b769185bafffffb8000ff000bb334ffffe34cccff0011e666ffffd333
+3408ff000666667b45fb45057e6afffffdccccfffffe8000fffff3199aff00208000
+083bf76205ffffed199abb8c9bbb8e080e2289acf803ac01f74af7fa15900a0e3bfb
+7cdbf8baac01f760fb3415910a0efb3f8badf7fab001d2f84b15fffffd999afffffc
+6666fffffc6666fffffd999a1f8a5e8668825aff0008ccccfffffc4cccff000c999a
+fffffe199aff000b999aff0002999a9fd4aaff00114ccca9ff0000b33408f7148e05
+47fb0627fb243d22fffff76666fffff46666ffffff999afffffc999a8b8608849386
+9a1ef7cc880597ad98bf92bdfffff98000ff0003b333fffff48000ff00024ccd7f8b
+087d6e05ffffe68000ffffcb3333ffffeb999a75ffffcbe666fffffecccd08fb1906
+d5e9f3f731c9f1ff000f4cccff00193334ff0002b334ff0007cccc8b8f8b8f868e84
+8b868b6f896e8b08fb4b06ffffdfe6668bfffff3999aff0004999afffff18000ff00
+056666080efbd2fb68a3f83ba3f83ca312f5d349d513f0f746f8bc1586ff0066e668
+baff00111998b19691918b978591318b49638ffb050813e891fb4c058b5973554184
+82828c849383ff0049800082ff001a80005f894e0813f085fb3e0586fb16c36af08b
+91918b9785915f8bffffd78000bdff00048000df0813e893f72905ff00046666ff00
+524ccdffffd66667ff00278000ffffbc3333ff001c3333088f07ff00433333ff0013
+3334ff002a199aff001cccccfffffbb333e4080efc1afb6776fa367701dcb703f711
+fb7c15fa365ffe36070efbd2fb69a3f83ca3f83ba312e2d549d313e8ea511590ffff
+99199a5cffffeee666658085858b7f9185e58bcdb387f7050813f085f74c058bbda3
+c1d59294948a928393ffffb6800094ffffe58000b78dc80813e891f73e0590f71653
+ac268b85858b7f9185b78bff0028800059fffffb8000370813f083fb2905fffffb99
+9affffadb334ff00299999ffffd88000ff0043cccdffffe3cccc088707ffffbccccd
+ffffeccccdffffd5e666ffffe33333ff00044ccd32080efb26f769c691c601a59cf7
+f99c03a5f76515920a0efbed0efbc7fb6476f8c6f501e6f503f724fb7915930ac0f8
+fb15940a0efb169376ff0064b333ff002e6667ff015c999aff001fb334ff00609998
+7701ff00453333ff0051cccddcafff003accccff0052b33403f77cf8f715ffff9c33
+3407ffffac6666ffffef6666ffffb0cccdffffafe6668bffff884ccc8bffff8e4cce
+ff003acccdffffaee666f3fffff4cccd08ffff9a3333afff0064b33307ff0034b334
+ff00024cccff002f1998ff00146666ff002c999aff0049199afffffc3334ff000899
+9afffff86666ff0003b333fffff766668cffffdfb334ffffd63333ffffd7199affff
+eb199affffd719988bfffffc80008bfffffc999aff00003333fffffc999aff00004c
+cd08ff015c199a07ff00303334fffffcb33292ffffe0999aff00039998ffffe08000
+ff0002e668ffffe64cccff000d4cccfffff766689f8b9f8bff001a8000ff000c6666
+8bff001d80008bff00338000ffffcb6666ff0025b332ffffa7199aff0001199c08ff
+006099980767fffe2e4ccc15ffffd0e666ff00180001ffffde199aff003d33338bff
+005533348bff0058b332ff0020cccdff003a8000ff00303333ff000fccce080efb16
+80c290b5f765b2f774bb019bd7b8e003d5f7c015ca78068b30803b5060707c737b8b
+78087b9c7f9ea19d97a2969099ae1ee38b8c4fe58bcc8bbdafa3bf8792858e838c71
+675c836d8b468b96bafb108badabb3c58cf70b08f70006969890931f9f078f888d86
+1efb10d206e2b0cdb91ea18b9a80987f978094839a8b08a39c9ba4af5298741f568b
+5e746867545570558b3608775e0779857e831f8007868c89901e0efb16f70bb8f7ad
+b701b7cbf78acb03f700f7c515d6beccd5ccc34d3c405a4a41405bcbd81ef70ffb4e
+15b68bb298aea508bb56b1b354b905a4ac99b18bb58bb77db171ab08c5ba62b65a51
+0569a56598608b628b667f6872085bc16461c25f05706b7c648b5e8b609a64a66a08
+525eb660b8c305ad72b17eb58b080efb1689acf2b2d3b2f7b1ac01f753e003f753f7
+13158b337a86368885858b769185bf8cff0025199a8cff0038e6668bff0037cccc8b
+ff002233348ac08a91918ba08591368e7a908be30892f70e0796998f951f9e078f87
+8d871efb1fd3f70e0696998f951f9e078f878d871efb158be7f75f05acd48b8fc090
+91918da085916b8a798a7a8b7a8b6d8c6b8c85858b769185bd8788866b42083efb44
+898b20f770057aae968eaf8b91918ba085916b8a588a858b7d8b5f8c6b8c85858b76
+9185b487a0739d6508f6fb6ffb0b8b0579857e831f7f07868c8a901ef72143fb0f06
+798580831f7e07868c89901ef721060efc14dcbc03f716f936155afbfebc06fb2b04
+5afbfebc060efb0efb40aaf994aa12bdc173d058d8f70fd858d073c113e2ff007ccc
+cdff019f199a15ffffd3999affffdc199affffe1999affffd033328bffffbf999a8b
+fb0ff55fd862cc68a5668b5c8b5d69685c8b0813ca608b7ca881b1869e81a1718b08
+70827a7664b54decf2c0cdcd1f8bb5fffff6199aff0021999affffdd199aff00234c
+cc0813d1ff002c6666ff0023e667ff001e6666ff002dcccd8bff004266668bf70f21
+b73eb44aae71b08bba8bb9adaeba8b0813d4b68b9a6e956590789575a58b08a6949c
+a0b261c92a245649491f8b61ff0009e666ffffde6666ff0022e667ffffdcb33408ff
+00ca3333fbd915ffffec8000ff00100002ffffe7199aff0010b333ffffe06666ff00
+1233330813e143b540b38be78bff00226666ff00106666ff00173334ff0019b334ff
+00173332ff001380007bff0018e666ffffef6668ff001f8000ffffedccccd361d663
+8b2f8bffffe0999affffee199affffe3e666ffffe7e666ffffea999a080efb6cf8a4
+ea01bde9d6e903bdf8d315950af73d16950a0eefa2abeca8f791a2eeab01adb3e6c9
+f7e9b303f84bf76c15fffffb6666ff0006199afffffb6666ff00063333fffff63334
+ff0002b333807b6f69588b085361c4d4edbaa4b31fc48b9c6a9c5d938b928c908e8c
+a38ca189b0778d7a98458b5b8bffffd2e666ffffecccccffffe3199affffdfb33473
+ffffe5199a7fffffdb999a8bffffd9cccc088bffffd36666ff00136666ffffd44ccd
+ff0022999affffe34ccdff001ab333ffffe9e666ff00249999fffff3199aff0026b3
+348bc28bb6ac9faa08fb0afb5515960af8a904970a0efbb4f7faabf772a401aabff7
+01c103f754f88a15980ab6fb2415990a0e57f730f76b159a0af748169a0a0e8ff7d7
+b701f887c103f887ee159e82ff00126668ff0002999aff00109998ff0006666608f7
+a0fc9507fffff94ccc798efffff2ccccff0003b334fffff3333408f85f060efb95f7
+73c701b3f79603f7a3f773152a0a0eefa2abf704a3eca3f701a3f703ab01adb3f739
+bae5c1f71eb303f80cf806155d797f6d1e61d6069d9a9ba4ad9b7a691efb05d4157b
+8b6d8c798c87878b7b8f87ab8893858b6b08fb28078b6b83856b8887878b7b8f879d
+8ca98c9b8b9b8ba88a9d8a8f8f8b9b878f6b8e83918bab08c307908ba78a8f8808bb
+3b059c6ea3829f8b978b978d97908c918a92878f7b887bff0008333380ff0012cccd
+085bdd05aa95a5a48bb28ba977b8408b778b67897b8b08c5fc3815960af8a904970a
+0efb5af8a5b701c6f7ac03f7cff8a51598969d97918793811ffb88067f817a7f848e
+83941f0efbdcf82da9f721a901adadf717ad03f75bf890159b0afb398c159c0a0e5e
+b0bdf774bd01f78ebd03f78ef89c15280af769fc77159d0a0efbb4f800abf79aa912
+bac0efc97ba313f0d4f8df15958b998e8e9dff00014ccdff0007e668fffffd3333ff
+000cccccff00038000ff00084ccc90979794aa8b9d8bab848b5c8b5573745e675b66
+65618b5b08f7620613e89e0a13f09f0a0efbb4f7faa9f71ca6f6a912b9bde5c66ac9
+13f8f74ef90415a00a13f4a10a13f8a20a0efb92f8b2f73401f743f95315a30a0e3b
+fb6976f774b8f8287712bdef2edaf762da13ecf7e8c7158d068e6f9b61c88b08bfaf
+b390928393871f858b887b718b08628ab4b91ff7d20771886f84728b08fbd607746a
+5464548b08537abdc91ff75807ab88cb8b1e6d886a84738b088b963c6f1ffb50078b
+5194588b6a0813f48b4c7b5c8b580862b3739ca39e9eb41e8bb669d18bcc8b90928f
+918b977ea581a68b08cb8bb6a5b2b7080e92fb7cacf9bfac01f7d1bddcbd03f803f8
+d215a69c96a2a29d846c1efd73076c798474747a96a61eb4f9ba15708b508d408b08
+fb1851343cfb1add4af7261f9a8b938c948d08fc52078b6ffffff3999afffff5199a
+ffffd66666fffffce6660870890587ffffffb33388fffffd4ccd8b86088b788d8905
+bc8dc68bd08bd08bff003c80008bff002f800089088d8d8b9e058b9087ff0002b333
+87ff00004ccd08718d05ffffd84cccff0003199afffff0b334ff0008e6668ba908f9
+73078ba9ff000f4cccff0008e668ff0027b334ff0003199808a58d058fff00004ccc
+8fff0002b3348b90088b9e898d05ffffd0800089ffffc380008b468b080efbedf75b
+f70001d2f70003f711f75b15a40a0e55fb5ca8d6abcb7701f7e3c903f7c22b15a50a
+0efbb4f800a8f77d7601f729c103f71bf90015a60a0efb8af7c3a5f767a501b2c5f7
+30c503b2f8411544c654d5e9b8ceccd05ec9343555533a1ef718f70315bdab623b43
+6079704f71c8bcc1a3babd1f0e57f817f76b15a70afb4816a70a0ecc3aa8d1adf79b
+a8f7957701f726c1f7dcbf03f8c1f8ed15a80a45fffe6eb33415a90affff3a4ccd04
+8b627e88638986838c7c8f85a98cff000cb3348bff00234ccc8bff001d99988bff00
+1266688ba98a8f928b998793698d7a8e8bb408a3bd0791ad538b8bf74805ff0008e6
+66fffff39998ff0001199afffff9b3341efffffcb3348bfffff6b334ffffff8000ff
+fffee664ffffff4ccdfffff0b334fffff6e666fffff4999cfffff4cccdfffff6fffe
+fffff58000ffffdce66662ffffd43334ffffcbcccdffffdeccccffffca3333fffffc
+999afffffa8000fffffcccce86fffffd1998fffff9b333fffffd666883fffffae666
+ffffebcccdff001a999a8b08ff0076cccc06fc20f8bd15a60a0ecc3cabf79aa9d1a8
+f7957712f728c1f75fc0efc97ba313fcf8a8f8ed15aa0afb23fc5515958b998e8e9d
+ff00014cccff0007e666fffffd3334ff000ccccdff00038000ff00084ccd90979794
+aa8b0813feab0a13fdff00088000ff001ab334ff00063334ff001f9999ff00044ccc
+ff0023b333fffffab334ff0003b33383ff0001999afffff54cccffffffb333806f7d
+646c8b08380694ac9aa6b5a90813feac0afbbdf83f15a60a0ecc3ca8d1adf791a9f7
+1ca6f077a5a912b7bde5c66ac9f798bf13fe40f8c6f8ed15a80a13ff40fc377715ad
+0a13fec0a10a13ff40a20af7f0fffe84b33415a90affff3a4ccd048b627e88638986
+838c7c8f85a98cff000cb3348bff00234ccc8bff001d99988bff001266688ba98a8f
+928b998793698d7a8e8bb408a3bd0791ad538b8bf74805ff0008e666fffff39998ff
+0001199afffff9b3341efffffcb3348bfffff6b334ffffff8000fffffee664ffffff
+4ccdfffff0b334fffff6e666fffff4999cfffff4cccd82fffff58000ffffdce66462
+ffffd43334ffffcbcccdffffdeccccffffca3333fffffc999afffffa8000fffffccc
+ce86fffffd1998fffff9b333fffffd666883fffffae666ffffebcccdff001a999a8b
+08ff0076cccc060efb34fb7aacf8a6f512b9dec3f545accecf13ecf7d5fb2315ae0a
+13f46df8a515af0a0eef89acf766b5f80b77dc7601f7b0f9c615b00afb22fc57154a
+0afbb1fb60154b0a0eef89acf766b5f80b77dc7601f835f9c815b10afb2efcad154a
+0afbb1fb60154b0a0eef89acf766b5f80b77d47601f80df9bc15b20afb06fca1154a
+0afbb1fb60154b0a0eef89acf766b5f80b77c3c089c212f869a613f4f83af97f15b3
+0a13ecb40a13f4b50afb33fc64154a0afbb1fb60154b0a0eef89acf766b5f80b779f
+eb12f755ebf721eb13dcf755f95615b60af78116b70afb3bfc3b154a0afbb1fb6015
+b80a13ecb90a0eef89acf766b5f878ab01f7a3b3ebb303f79bf7af154a0afbb1fb60
+15c2f725059098918fa38b08f7678bc5fb3d05ff000bccccffffdd8000ffffd9ccce
+fffffce666ffffd06666fffffc999a85858b769185b08cc28cb28bb48bb18aae8a91
+918ba08591ffffd93334ff00038000ffffde3334ff00034cccffffee9998ff003033
+3408ffff396666ff0227800005ff001db334ff000e1998ff0014e666ff001de6688b
+ff0020800008ba61b15d5d61645d1e8bffffdb3334ff001accccffffdfccccff0022
+4ccefffff4800008ffff1ee666fffdec800005714dffffe1800085ffffd480008885
+858b769185a58cff0020b3338cff001e4ccd8bb48bbd8ab08a91918ba08591ffffda
+6666ff0002999a5cff00044cccff000f999aff0029199a08f760f94415ba0a0ef7a2
+89ac6cb2f777b29db1f788b36cac12f841dff74aacb2ac9bae1333c0f7a3f7c515bb
+0afb4b0413b3c0bc0a1373c0bd0a13b3c0be0a137bc0bf0a13b7c0c00a1373c0c10a
+13b3c0c20a0ebefb5ca8d6abc1b4f8e2b001b0e6f7a4c9f3ac03f8032b15c30a0e65
+89ac6cb2f7b0b1f788b36cacd27612f4e0f74aacb2ac9bae1327c0f789f9c515b00a
+36fc081530f748061337c0c40a13afc0540a1367c0550a13a7c0c50a1377c0c60a0e
+6589ac6cb2f7b0b1f788b36cacd37612f4e0f74aacb2ac9bae1327c0f7f2f9c815b1
+0a46fc5f1530f748061337c0c40a13afc0540a1367c0550a13a7c0c50a1377c0c60a
+0e6589ac6cb2f7b0b1f788b36caccb7612f4e0f74aacb2ac9bae1327c0f7cff9bc15
+b20a69fc531530f748061337c0c40a13afc0540a1367c0550a13a7c0c50a1377c0c6
+0a0e6589ac6cb2f7b0b1f788b36cacc9eb12f4e054ebe8eb5bacb2ac9bae1324b0f7
+d8f9891513247071a175a51e1324b0a5a1a1a51f132470a575a1711e717575711f13
+2530fb5116b60af726fc2015133670530a13ae70540a136670550a13a670c50a1376
+70c60a0efbbe89acf8dbacd27601f5e003eef9c515c70a6efcf715590a0efbbe89ac
+f8dbacd27601f5e003f766f9c715b10a78fd4d15590a0efbbe89acf8dbaccb7601f5
+e003f739f9bc15b20aa5fd4215590a0efbbe89acf8dbacc9eb0191eb8fe08feb0314
+1cf757f98915b70afb5116b70af74dfd0f15590a0ef589adf793b2f7b3ad01f5e0f8
+07eb03f753df15c80a60f8c515c90a0ef3967693acf8dbacb8c089c212f1bcf7cda6
+ccbc1337f835f97d15b30a132fb40a1337b50af71ffb7d15ca0a1367cb0a13a7cc0a
+0ef681aff8e8afc97601b0ebf849eb03f7c4f9c715cd0a2dfb0515640af7e3fbb915
+650a0ef681aff8e8afc87601b0ebf849eb03f817f9c815b10a53fb5a15640af7e3fb
+b915650a0ef681aff8e8afc07601b0ebf849eb03f802f9bc15b20a68fb4e15640af7
+e3fbb915650a0ef681aff8e8afadc089c212b0ebf7d8a6e1eb13eef82ef97d15b30a
+13deb40a13eeb50a3cfb0f15640af7e3fbb915650a0ef681aff8e8af8beb12b0eb67
+ebf7cdeb6beb13a8ecf95615b60a13a4f82d16b60a13d2fb433715ce0af7e3fbb915
+650a0e5ef719f7cf01f708f7cf03f7c8f7b615f70ff70f68aefb0efb0ffb0ef70f67
+68f70ffb0ffb0ffb0eaf68f70ef70ef70efb0eaeae050ef681aff8e8af01b0ebf849
+eb03f7007e15cf0af773f90f15d00af757ffff894ccc15d10a0ecd81b4f8dbacd376
+01e2e0f7f6bc03f7a8f9c615b00afb75fb67156b0a0ecd81b4f8dbacd27601e2e0f7
+f6bc03f829f9c715b10afb7dfbbc156b0a0ecd81b4f8dbaccb7601e2e0f7f6bc03f8
+04f9bc15b20afb58fbb1156b0a0ed381b4f8dbac98e901e4e0c5e9bde9c6bc03f7d7
+8115d20a30f96115d30af72416d30a0e7789acf8dbacd37601f790e003f7fcf9c815
+b10a74fd4e156f0a0e4789acf70bacf7c7ace6ac01ede0f76de803f74bf87315a091
+bc909e8b08c6d070fb0cfb15416c431f658b738d828e084904b0079a86a587ae8b08
+f746c3f70ad6d268f701fb4d1f788b68896789088f078bde9c90d18e91918ba08591
+5a8a6d8a588b598b6e8c598c85858b769185d1889c868b3808fc25078b387a864588
+85858b769185bc8ca98cbe8bbd8ba88abd8a91918ba08591458e7a908bde080e5581
+ac72acf803acf77eac12e7daf756de6ae0137ce7f70e158b387f86528885858b7691
+85a98cb28cb38bad8ba98aa28a91918ba0859167907f8e8bde08f7d407f70097f707
+f3c0a466551e8b4265634857087e0713badf4bd2388b2e083062616d746d8ba91e8b
+9793948b9c089f8395777b7c787b5f9f57dfe7cbd9f41e8bf70826cf3cbf088d0713
+7cd1c0c5b98bd808bb5bca233cfb1153fb3962fffff4199a86ffffdbe6661e7e8b83
+70918508be06948e87831f0efb1e81bb5bb4f80bac12afde4bd8f735d91324f758f9
+3315740aa6fbcc15d40a1374d50adafb381513ac760a1374770a0efb1e81bb5bb4f8
+0bac12afde4bd8f735d91324f788f93315d60abcfc4a15d40a1374d50adafb381513
+ac760a1374770a0efb1e81bb5bb4f80bac12afde4bd8f735d91324f77bf92815d70a
+c9fc3f15d40a1374d50adafb381513ac760a1374770a0efb1e81bb5bb4f80bacdcc0
+89c212afde4bd8f735d962a6133080f7aff8d115b30a132880b40a133080b50a1365
+0095fbe815750adafb381513a300760a136500770a0efb1e81bb5bb4f80bace4ea12
+afde4bd85ae9d6e956d9133200def8d315d80a133100f73d16d80a137880b4fbea15
+750adafb381513b480760a137880770a0efb1e81bb5bb4f80bacc5abf5ab12afde4b
+d881b3ebb386d9133980f766f90f15d90a335615da0a137c40f73ffbf115750adafb
+381513ba40760a137d40770a0ee781bc5ab5f74baef730ac12b2d34ed4f743d4f75d
+d7137bf79df81415db0a13b7dc0aacfb3d15dd0a137bde0ad5b115df0a0efb3bfb5c
+a8d6abff00364ccdff0030b333f803ac12b0e1f71ec97ce213fcf7782b15e00a13fa
+e10a0efb2881bcf765adf70eac01b0dff75be103f766f93315740afb30fb9b157f0a
+dcfb5415800a0efb2881bcf765adf70eac01b0dff75be103f7a2f93315a30afb26fc
+19157f0adcfb5415800a0efb2881bcf765adf70eac01b0dff75be103f78df92815d7
+0afb11fc0e157f0adcfb5415800a0efb2881bcf765adf70eace6ea12b0df75e9d6e9
+61e113f4eef8d315d80a13f2f73d16d80afb24fbb915e20a13f1e30adcfb5415e40a
+13f9e50a0efbd889acf7f6a7a87701f1da03eef93315740a97fc3b15e60a0efbd889
+acf7f6a7a87701f1da03f737f93315a30a9dfcb915e60a0efbd889acf7f6a7a87701
+f1da03f721f92815d70ab3fcae15e60a0efbd889acf7f6a7a877f5ea1287e997da7b
+e913f887f8d315d80a13faf73d16d80a13fc9bfc5915860a0efb0181aff80eaef797
+7701ade1f787df03f78ca5154452e0f706d7a4f2f01fb68bae78a26e97608f5f8b5d
+08fb3647685c1efb6af74a1523d4fb06f710f704f3d9f73d1e8bf7264af70635e108
+799deccc75ab21440568a767a3689e087b7605a37aa277a075089b7b2244a16bf701
+d405b05da95ba1567295728f718b0839fb1851fb411f0e5689acf7f6a771bfdcc089
+c212ebdaf760da4aa61395f7eef8d115b30a138db40a1395b50afb36fb6b15e70a13
+c6e80a13a6e90a0e3081aef80fae01b4e1f78ee103f774f93315740afb91fbe8158a
+0af759f75b158b0a0e3081aef80fae01b4e1f78ee103f7a2f93315a30afb79fc6615
+8a0af759f75b158b0a0e3081aef80fae01b4e1f78ee103f7a0f92815ea0afb77fc5b
+158a0af759f75b158b0a0e3081aef80faedcc089c212b4e1f774a68ae113ecf7c4f8
+d115b30a13dcb40a13ecb50afb9bfc0415eb0a13caec0af759f75b158b0a0e3081ae
+f80faee4ea12b4e185e9d6e984e113e8f70df8d315d80a13e4f73d16d80a13f2fb8d
+fc0615ed0af759f75b158b0a0e5eff004a999aff0058ccccff003e999abdff004299
+9aff0058cccc01ff00e1cccdff0058cccd03ff00e1cccdf81715ff00000001ffffe7
+b334ff00141999ffffebe666ff00184cce8b08ff00184cccff0014199aff0014199a
+ff00184cccff00184cccffffebe666ff0014199affffe7b334ffffe7b332ffffebe6
+67ffffebe666ffffe7b3341ffba004ff00000001ffffe7b333ff00141999ffffebe6
+67ff00184cce8b08ff00184cccff0014199aff00141999ff00184ccdff00184ccdff
+ffebe666ff00141999ffffe7b334ffffe7b332ffffebe667ffffebe667ffffe7b333
+1fff00ed3333f6159d0a0e3081aef80fae01b4e1f78ee103f832f85a15ee0afb4459
+15ef0aff0073cccc3715f00a0e4b81ba84a6f7e9ac12e3daf758da1338f76ff93315
+740a13b843fcbf15f10a1378f20a13b8f30a0e4b81ba84a6f7e9ac12e3daf758da13
+38f7bdf93315d60a13b83bfd3d15f10a1378f20a13b8f30a0e4b81ba84a6f7e9ac12
+e3daf758da1338f79bf92815d70a13b85dfd3215f10a1378f20a13b8f30a0e4b81ba
+84a6f7e9acecea12e3da5fe9d6e974da1334f70ff8d315d80a1332f73d16d80a13b5
+40fcdd15f10a1379f20a13b8f30a0e3bfb7cdbf8baac01f7cff93315a30afb03fdd3
+15910a0e2efb7eacf753adf805b9f75ea9a67701dfdaf76ce103f735f7b415d1ff00
+4a8000aeff002180001ea48b9d829a7cb66094518b4f8b34722a218bfffff1cccd8b
+ffffe48000ff00013333ffffe3b333ff001866677fff000a666686ff000633338bff
+001fcccd083ef86115fd31078b3880864e8885858b769185b58ca58cb78bba8baa8a
+b68a91918ba08591448f808f8bde08ef078ba793fffff5666696fffffb999aff0014
+cccdfffff7999aff0016cccdfffffb6666ff001b66668bc08bbb9eb2b2b8b8a6c88b
+dc8bf442ee2a8bffffcc80008bffffd9e666ffffe43334ffffe6999affffe6199808
+7cfffff0b334898b8ba108f75307cc8fb38b1e92878e821e7281407d638889838d7b
+9185bf8897908b37080e3bfb7cdbf8baacecea01f720e9d6e903f720f8d315950af7
+3d16950a22fd7315910a0eef89acf766b5f80b77efbd01f862f97615f40aa4fc5b15
+4a0afbb1fb60154b0a0efb1e81bb5bb4f80bacdabd12afde4bd8f735d91332f7d6f8
+9a15f40af757fbb115d40a137ad50adafb381513b6760a137a770a0eef89acf766b5
+f80b77c0bf01f772a7f76ca703f882f9b815f50afb7bfc9d154a0afbb1fb60154b0a
+0efb1e81bb5bb4f80bacc8c4e57712afde4bd84ea6f757d952a6133940edf91b15f6
+0a137c80f757fc3215750adafb381513ba80760a137c80770a0eeffb5cb1f734acf7
+66b5f80b7701f88bc903f951fb1b158792858f828b75757b7b6e8b08667ea0a5b9bc
+ced21f91918ba08591ffffd93334ff00038000ffffde3334ff00034cccffffee9998
+ff0030333408fb62f8d0057c8270807e8b08fb77fcac05714dffffe1800085ffffd4
+80008885858b769185a58cff0020b3338cff001e4ccd8bb48bbd8ab08a91918ba085
+91ffffda6666ff0002999a5cff00044cccff000f999aff0029199a08c2f725059098
+918fa38b08f7678bc5fb3d05ff000bccccffffdd8000ffffd9cccefffffce666ffff
+d06666fffffc999a85858b769185b08cc28cb28bff000980008bff00094ccc8bff00
+093334ffffffe666ffffc3999870ffffdc6668ffffc6999a8bffffd680008b55b177
+bd8b08b48bb39fa8b808fc4af836154a0a0efb1efb5cb1f72cb4f80bac12afde4bd8
+f716c96cd913e4f860fb1b158792858f828b75757b7b6e8b668b7ea08ba58bff0028
+199aff0019e666ff001d8000ff002fb334ff0028b333ff00174cccff00069999ff00
+146666ff000be667ff000db334ff000d3333fffffe4cccff000c4ccc87ff00086667
+fffff4b334ff00064ccd08fffff88000fffff9ccccffffef3334fffff63334fffff3
+4ccc8b0813ea6e8ab2b91ff72707f7223da6423938555273977fa2a89da0981e8b92
+8a92898f8a8e8a918b9608aab596b1adba7afb051e8b848887888a0835760513f22b
+7346568b478b39c371d18bff0022cccd8bff001e333393b7ad089f9b8d8b05ff0005
+6666ffffe4199aff0009199affffe76666ff00266666fffffb4ccd0813e4ffffce4c
+ceffffdae667ffffddccccffffd933328bffffd7199a8b55b177bd8b08b48bb39fa8
+b80813f2fb3bf80415750a0ebe81b4f8e2b0c77601b0e6f84aac03f81cf9c715b10a
+68fdd115500a0efb3b81bcf803ac01b0e1f74de203f792f93315a30af724fcd8157a
+0a0ebe81b4f8e2b0c17601b0e6f84aac03f80cf9bd15b20a78fdc715500a0efb3b81
+bcf803ac01b0e1f74de203f783f92815d70af733fccd157a0a0ebe81b4f8e2b0b6f3
+01b0e6f744f3f732ac03f7c4f98515f7000ac0fd8f15500a0efb3b81bcf803acf701
+ef01b0e1c3efa8e203f747f8ec15f7010af76ffc91157a0a0ebe81b4f8e2b0c77601
+b0e6f84aac03f7e1f94d15f7020aa3fd5715500a0efb3b81bcf803acf7627701b0e1
+f74de203f75ef88a15f7030af758fc2f157a0a0ef589adf8d9add27601f5e0f807eb
+03f7b7f94d15f7020a27fcf915510a60f8c515520a0e4881ba84a6f7efaedb9ce5d3
+52a912b2e1f770daeab7133b80f88bf94e15f7040afb32fcd215f7050a13b380f706
+0a80fffef84ccc157c0a137b80a19dae9ac89291918b9a85914b90829e8bbc08f859
+07cc8fb38b1e92878e821e13b7807281407d638889838d7b9185bf8897908b3708fb
+1407848989841e878b629c6a8b498b5f756365606071508b418bfb0fc931f7008bb2
+8bb09fbcff00284ccc080ef589adf793b3f7b2ad01f5e0f807eb03f753df15f75ff7
+0407ff000c4ccc8dff000ab334ff000fcccc8bff0009999a8bff0004cccefffffc4c
+ccff00068000fffff6b334ff00014ccc08fb0ef78106aeae99bcf76cd2fb43fb2efb
+5efb0d59fb2129809fab1e60f8c515ffffdc4ccd8bffffcab3338c638c85858b7691
+85d1889c868b3808fb5845077ffffffdb33482fffff14ccc8bfffff666668bfffffa
+66668efffffa3334948908dafb39068b387a86458885858b769185b28cff00354ccd
+8cff0025b3338bb08bb589f28b08f721f74ecbf78af74efb2df72dfb541f448b5489
+648b080e3281ba84a6f7efaee9b3cfa9a67712b2e1f770da13bff7edf710157b0a80
+fffef84ccc157c0a137ff7070a13bf7e0a0e6589ac6cb2f7b0b1f788b36cacedbd12
+f4e0f74aacb2ac9bae1327c0f80bf97d15f40af716fc141530f748061337c0c40a13
+afc0540a1367c0550a13a7c0c50a1377c0c60a0efb2881bcf765adf70eacdcbd01b0
+dff75be103f7e5f89a15f40a96fb80157f0adcfb5415800a0e6589ac6cb2f7b0b1f7
+88b36cacb6bf12f4e05da7f75cac7aa7a7ac9bae132570f834f9b715f7080afb1bfc
+4e151336b0530a13aeb0540a1366b0550a13a6b0c50a1376b0c60a0efb2881bcf765
+adf70eaccbc4e57712b0df6fa6f75ce145a613fa80f70cf91c15f60a8ffc0215e20a
+13f900e30adcfb5415e40a13fd00e50a0e6589ac6cb2f7b0b1f788b36cacc1f312f4
+e0a7f3bdacb2ac9bae1327e0f76ef98515f7090acafc1c1530f748061337e0c40a13
+afe0540a1367e0550a13a7e0c50a1377e0c60a0efb2881bcf765adf70eacf702ef01
+b0dfc6efb3e103f748f8eb15f7010a53fbd1157f0adcfb5415800a0e65fb5cb1f734
+ac6cb2f7b0b1f788b36cac12f4e0f702c995acb2ac9bae13d3e0f886fb1b15879285
+8f828b75757b7b6e8b08667ea0a5b9bcced21fffffffccccff0000333305ff0005cc
+ceffffffe666ff00036666ffffffe6668b8b99bd9acd93befffff5999891fffff480
+02ff00023333fffff2e666fffffccccd0813bbe0f70a0a13d7e0540a13b3e0b08cc7
+8cac8b08f76b06ff0009e6668bff000b4cceffffffe666ff000bb332ffffffe667ff
+ffc3b33470ffffdc6666ffffc699998bffffd6999a8b55b177bd8b08b48bb39fa8b8
+080efb28fb5cb1f72cbcf765adf70eac01b0dfc1c9dee103f809fb1b158792858f82
+8b75757b7b6e8b668b7ea08ba58bff002b6666a8ff001dccceff003f199aff00347f
+ffff001eccccff000f4ccdff0019999aa2ff00158000a7889585907f8c0866656e7b
+518b678b61a06cbe77ac7fb98bc508f79e890597929196df6de5fb1f34fb0538fb2c
+1f8b539955ac65ad63ba73d38bff0007999a8bff00076666ff00004ccdff00073334
+ff0000b333ffffce3332ffffdae666ffffdd999affffd9199a8b628b55b177bd8bb4
+8bb39fa8b808fb8df835157f0a0e6589ac6cb2f7b0b1f788b36cacd27612f4e0f74a
+acb2ac9bae1327c0f7a0f94d15f7020a98fbe41530f748061337c0c40a13afc0540a
+1367c0550a13a7c0c50a1377c0c60a0efb2881bcf765adf70eacf7637701b0dff75b
+e103f75bf88915f7030a40fb6f157f0adcfb5415800a0ee581aff783aff7d5afc076
+12b0ebf821e063ac13f8f813f9bc15b20a85fb2a15f70b0a13fcf70c0a13faf70d0a
+0e2cfb82b0f74ec455c8e2aaf785aa75b812abd062dd41c0f75adb9dc2139060f78a
+f92715d70ad4fc10152e5c78661e139960f70e0afb4ffbb51513d260f70f0a13b260
+f7100af7ccf82115f7110a139560f7120a13b960f7130a13b0e0830a13b260f7140a
+13d4e0f7150a0ee581aff783aff7d5afaebf12b0ebdea7f76ca7b5e063ac13fe00f8
+7cf9ba15f7080afb03fb2815f70b0a13ff00f70c0a13fe80f70d0a0e2cfb82b0f74e
+c455c8e2aaf785aa75b8aec4e57712abd062dd41c067a6f763db44a6c9c2139316f7
+04f91815f60a139b4af763fc0115820afb4ffbb51513d382f70f0a13b382f7100af7
+ccf82115f7110a139742f7120a13bb427f936a9f508b328b394f8b2f0813b3128b55
+a36ca7700813b322830a13b382f7140a13d72af7150a0ee581aff783aff7d5afb6f3
+12b0ebf73ff3f70ee063ac13fcf7c4f98515f7090ad42c15f70b0a13fef70c0a13fd
+f70d0a0e2cfb82b0f74ec455c8e2aaf785aa75b8e0ef12abd062dd41c0c6efb2db9d
+c2139238f748f8eb15850af71ffbd4152e5c78661e139ab8f70e0afb4ffbb51513d3
+38f70f0a13b338f7100af7ccf82115f7110a1396b8f7120a13bab8f7130a13b27883
+0a13b338f7140a13d678f7150a0ee5fb76a3daddaaaff783aff7d5af12b0ebf79db2
+e8e063ac13fe00f80b6215f7160a8df94f15f70b0a13ff00f70c0a13fe80f70d0a0e
+2cfb82b0f74ec455c8e2aaf785aa75b8bcdddb9f12abd062dd41c0b8adf70bdb9dc2
+13931cf778f89315f7170ae6fb7c152e5c78661e139b5cf70e0afb4ffbb51513d39c
+f70f0a13b39cf7100af7ccf82115f7110a13975cf7120a13bb5cf7130a13b33c830a
+13b39cf7140a13d73cf7150a0ef71b89acf7b6b5f78facc97601f5e0f7eae003f8fe
+f70e15580afb7cf94015b20a0e5289acf7f8bff75ea9a67701e3daf766da03ff0153
+4cccff0297e66815fffff66668ff00033330fffff66666ffffff3334fffff66666ff
+fffd999cffffe5e666ffffcfb330ffffd6999affffc74cd0ffffdf999a61ff000566
+66fffff69998ff00084ccdfffff9b334ff00081999fffffde666ff0023199aff0017
+199aff001bb334ff001c6664ff001cccccff0021999ca6ffffdf8000ff001d8000ff
+ffe49998ff00223334ffffe6ccceff000866668dff0009ccccff00088000ff000480
+00ff00074cce08ffffdf999ab5ffffd86666ff0037b330ffffe5e666ff00314cd008
+ffff53b334fffe85fffe15840a0ef71b89acf7b6b5f729adcfac01f5e0f7eae003f8
+fef70e15f81ac5adffffc6999807ff00036668c8ff00141998ff00044cccff003ee6
+68ff0002b33491918ba08591628a588a658bffffdab3348bffffd04ccc8c5f8c8585
+8b769185ff003ee666fffffd4cccff0014199afffffbb334ff000366684e08fffeab
+333206ff00036666c8ff0014199aff00044cccff003ee666ff0002b33491918ba085
+91658a628a588b598b628c658c85858b769185ff003ee666fffffd4cccff0014199a
+fffffbb334ff000366664e08ffffbf999a69ccfc1a068b387a86458885858b769185
+b78cff00304ccd8cff0025b3338bff00244ccd8bff0030b3338ab78a91918ba08591
+458e7a908bde08f75bf7eafb5b078b387a86458885858b769185b88cff002fe6688c
+ff002519988bff00254ccc8bff002fb3348ab78a91918ba08591458e7a908bde0836
+f81a15fb29fbeaf729070e5289acf7f8bfe6b2d3a9a67701e3daf766da03f73bff01
+1de666158bff0015199a94ff000c4ccc93ff0008b334b1ff00254cccff0032999aff
+0015b334ff002766668bff001466668ba0fffff2e666ff000b999affffe9199a95ff
+ffec33348dffffe4cccc8b6d08fb2c078b398187578686858b769085a78cad8cb38b
+b38bac8aac8a90918ba086915390808f8bdd08f729078bc2fffffc4cccff00308000
+ffffe8b334ff001e8000ffffef3334a1ffffe0cccc97688bffffcee6668bffffc419
+9a7e4e47fffffc999afffffc3334fffff99999fffff5cccc8b9908ff0000999af740
+ff00ae33338b8bb2fb428b8b9905cc8fb38b1e92878e821e7281407d638889838d7b
+9185ff0031cccdfffffd1998ff000d1999ff000480008cffffb6666808ffffc2199a
+64c9fc2c068b38fffff4333387518785858b769185ac8cff0024cccd8cb38bb18bff
+0020cccd8aa78a91918ba08591ffffcd33338f828f8bde080efbbe89acf8dbacb7c0
+89c212f5e0d0a613ecf769f97c15b30a13dcb40a13ecb50a75fd0215590a0efbd889
+acf7f6a7a877edc089c212f1daff002d6666ff00184ccd13f6ff00b8199af8d115ff
+ffeee6668bfffff0b33392fffff1999a970813ee7999ffffec33339f708bffffd94c
+cc8bffffeb4cce64fffff3666650ff0005666685948aff0009e6678dff0008ffffac
+949aff001766678bff000f4ccd8bff0011199a83ff00103333800813f6ff0012e666
+7dff0012e66779ff0013cccc8bff002966678bff001a1999b2ff000acccdc7fffffa
+999a8f828efffff619998a08fffff3666761fffff6199981ffffec33348b08fffffc
+e666fc5715e60a0efbbe89acf8dbacedbd01f5e003f793f97d15f40af734fd031559
+0a0efbd889acf7f6a7a877ebbd01f1da03ff00dbe666f89a15ff000bb334ff0009e6
+66a09791fffffc666696821fffff35800006fffff6199afffff6199a777f84ff0003
+999980ff0008199a1fff00a2b333fc2015e60a0efbbe89acf8dbacb8bf0198a7cce0
+cda703f7b1f9b915f50a2dfd3f15590a0efbd889acf7f6a7a877dcc4e57701ff0003
+e666ff00184ccdff0049cccddaff0029999aff00184ccc03ff001c3333f91e15ffff
+e7b3337f05ff000c999a36ff002de66659ca8bff0035199a8bff0039999abcff000a
+cccce108ffffe7b33497058251ffffd699996bffffd133338bffffcf66678bffffd9
+4ccdb0fffff61999c008ff0098cccdfca415e60a0efbbefb5cb1f734acf8dbac12d4
+c96ee013f0f7a3fb1b158792858f828b75757b7b6e8b08667ea0a5b9bcced21fffff
+ff999aff0000800005ff0007e666ffffffcccdff0007ccccffffffe666ff0007b334
+ffffffcccd91918ba085910813e8458e7a908bde08f825078bde9c90d18e91918ba0
+85915f8affffd080008affffd980008bffffde80008bffffcf80008c5c8c85858b76
+9185d1889c868b3808fc25078b387a86458885858b769185b88cff0030b3338cff00
+244ccd8bff00064ccd8bff0006cccd8bff00071999ffffffe6660813f0ffffc3999a
+ffffe5199affffdc3333ffffc680008bffffd680008b55b177bd8b08b48bb39fa8b8
+080efbd8fb5cb1f734acf7f6a7a877f711ef12c8c96aef33da13fcf797fb1b158792
+858f828b75757b7b6e8b08667ea0a5b9bcced21fffffffb333ff00004ccd05ff0003
+7fffffffffe667ff00036667ffffffe667ff00036666ffffffe66691918ba0859108
+13f94e8f808f8bde08ff00c74ccc07ff0031b3348fcb8b1e8f868e831effffe38000
+80ffffd8800082468289858d7b8d85ff00368000fffffae666ff000a8000fffffa19
+9a8b5208fb57078b3880884e8685858b769185ac8cb28cb38b08ff000f4ccd0613fc
+ffffc38001ffffe5199affffdc3333ffffc666668bffffd680008b55b177bd8b08b4
+8bb39fa8b80813fafb3df97215850a0efbbe89acf8dbacc1f312ecf32ce013f0ecf9
+8515f7090a13e8e9fd0b15f7180a0efbd889acf82f7701f1da03f749f70e15e60a0e
+8efb40b8f711acf8dbac01f5e0f77de003f891f89f15f7190afbd29e15590a0e56fb
+73b7f745acf7f6a7a877f711ef12e5ef33daf750ef35da13f900f805f8eb15850a13
+f88099fbae15870a13fc00fbb9f7ae15850a13fa00e6fc7115860a0efba5fb40b8f9
+79accb7601f721e003f759f9bc15b20aa8fbb1155a0a0efbd7fb73b7f8c8a7a87701
+f705da03f705f7d115f71a0ac1f7e915d70a0eb5fb76a3daddb2acff0115e666ff00
+266666ff010ab334ac01f5e0f74cb203f7f46215f7160afb35f737155b0a0e38fb76
+a3daddb2acf803acf766a9a67701e1daf710b203f79e6215f7160afb48f73715880a
+0e3f89acf746a4f738ac967712ebda869013e8f743f70e15ff0056e66607ff0011b3
+33ffffff6667ff000d199afffffe6666ff00093333fffffccccd96fffff88000ff00
+09199a82ff000be6667b08d42905ff001d6666ffffd88000ff0008999afffff08000
+8f7cff0000ccccfffffd199aff00003334fffffde6668e8b9f8c978ca98baa8ba08a
+a98a91918ba08591698fffffe6b334ff00046666ffffe54cccff0021999a08fb18f7
+3a05fffffc6666ff00048000fffffc999aff000480008b908b8f8b8d8f8f08e3e605
+a9abae93b38f91918ba08591668a7d8a678b658b748c668c85858b769185c387ffff
+e84cccffffdcb334fffff6b334fffff44ccc08746effffe0b33469ffffe64ccc78ff
+ffeae666fffff06666ffffe6cccdfffff4999affffed4ccdfffffcb33308ff005699
+9907ff0031b3348fcb8b1e13d88f868e831effffe3800080ffffd880008246828985
+8d7b8d85ff00368000fffffae666ff000a8000fffffa199a8b5208fb57078b388088
+4e8685858b769185b58ca58cb78bae8b988ab68a91918ba08591086190818e8bde08
+0e4889ac6cb2f8d3acd27612f5e0f7afac133cf754f9c715f71b0a137c60fdc7155c
+0a13bc5d0a137c5e0a13bc5f0a0efbdf89acf8f6a9a67701eada03eaf70e15890af7
+00f7b415f71b0a0e48fb76a3daddb2ac6cb2f8d3ac12f5e0f701b2f71bac13cff7a9
+6215f7160a13dffb14b4155c0a13ef5d0a13df5e0a13ef5f0a0efbdffb76a3daddb2
+acf8f6a9a67712eada78b213fceaf70e15890ab0fcec156e7678731f8b70a4829c88
+0813fa9d8998878b778b7971735a808b828d829185c494bca98bc708bf73ad651e0e
+4889ac6cb2f8749cd9ac76d312f5e0f775b799ac132ff824f94e15f7040a1367fb8f
+fd4e155c0a13a75d0a13775e0a13a75f0a0efbc589acf87c9ce5d352a912eadaf6b7
+13ecf79df94e15f7040afb3efcd415f71c0a13dcf71d0a0e4889ac6cb2f788f3f777
+ac12f5e0edf3dcac133ef7b5f7e315f7090a137efb20fbe3155c0a13be5d0a137e5e
+0a13be5f0a0efbdf89acf7aeebf77ca9a67701eadab2ea03f769f7fc15739d74a9a6
+9fa1a4a673a174707673721efb0afb8215890a0e4889ac6cb2f8d3ac12f5e0f7afac
+13b8f7caf85515fb0bffffbc199a8bff008de666058bde9c90d18e91918ba085915e
+8affffd1199a8affffd9e6668bffffdbe6668bffffd1199a8c5d8c85858b769185d1
+889c868b38088bffff41999a26ffffc666669d6cdeff002f999a8bffff566666058b
+387a86458885858b769185081378f71e0a13b85d0a137877436650218b084c066479
+9ebe1f8bff00e76666f71dff004e999a050efbdf89acf82b77f773a9a67701eada03
+f787f84a1546ffffd780008bff00b9800005cc8fb38b1e92878e821e7281407d6388
+89838d7b9185c58791888b40088bffff30333432ffffcbcccc9c6ed3ff0029e6668b
+ffff42199a058b3880864e8885858b769185ae8cb08cb38bb38bb18aac8a91918ba0
+85914e8e80908bde088bff00ebe666e1ff0032199a050ef3967693acf8dbacd37612
+f1bcf829bc133cf813f9c815b10af741fbc815ca0a137ccb0a13bccc0a0e5689acf7
+f6a771bf12ebdaf760da1398f7cef93315d60afb16fbcd15e70a13d8e80a13b8e90a
+0ef3fb76a3daddbf7693acf8dbac12f1bcf77ab2f71cbc13cff7fa6215f7160af75a
+f8bd15ca0a13dfcb0a13efcc0a0e56fb76a3daddb2acf7f6a771bf12ebdaf701b2c3
+da13e7f7996215f7160a3ef82315e70a13f7e80a13efe90a0ef3967693acf8dbacd2
+7612f1bcf829bc133cf7dff94d15f7020af775fb4d15ca0a137ccb0a13bccc0a0e56
+89acf7f6a771bff7637712ebdaf760da139cf78af88b15f7030a4dfb2515e70a13dc
+e80a13bce90a0e5689acf7f6a771bfdb9ce5d312e3b774daf760da139dd3f94e15f7
+040af711fbe815e70a13dbe80a13bbb1b0b8a1b28b9f8ba07e977495778d708b6d08
+fb2c078b398187578686858b769085a98cab8cb38bb38baf8aa98a90918ba0869153
+90808f8bdd08f729078bc287bb74aa7aa16c97688b5a8bffffc84ccc7effffc4b334
+47080ef716fb40b8f711acf8cfc35fac12f5e0f7e5e513dcf74af91b15828a7f8a7e
+8b598b6e8c598c85858b769185d1889c868b3808fc25078b387a86458885858b7691
+85bc8ca98cbe8bbd8ba88abd8a91918ba08591458e7a908bde08ff0144800007ff00
+02b333ff0010ccccff00084ccdff000c666892ff00084ccc0813ecc0cacbc2bd8bb9
+8bb081a664ff0019ccccffffdaccccff00103334ffffb433348b2608fb9607fb4857
+6f6a1e7d8b7d938495819887a06c8b087d6d767567c079a11fb88bff001ee666ff00
+083333ff0029199aff0022cccdff002be668ff00253333ff003f1998ff003dcccd8b
+f72308f76c078bf719ffffe99998ff00564cccffffd66668ff0030b33468b45e9f4d
+8b318b4951533c088b85fffff88000881eff0012800007cc8fb38b1e92878e821e0e
+48fb73b7f745acf7f6a771bf12ebdaf760da13ecf743f7fa158bb3fffffcb333ff00
+19b334fffffb4ccdff000a4cccfffffde666ff0004999afffffe199aff0003666683
+8b6f806e82468289858d7b8d85c18696868b5108fb57078b3981874f8685858b7691
+85b48ca58cb68bb28b9d8ab58a91918ba085915890828f8bdd08f738078ba0949793
+940813dcb1b0b8a1b28b9f8ba07e977495778d708b6d08fb5a07fb1887fb0f591e80
+8b7e8f849281957f9b758b08807677796eaf7d9e1fa08bbf8eb0aabab1a7d38bf751
+08f735078bc287bb74aa7aa16c97688b5a8b557e4e4708888785818b99080ef681af
+f8e8afe2bd01b0ebf849eb03f85ef97d15f40aecfb0f15640af7e3fbb915650a0e30
+81aef80faedabd01b4e1f78ee103f7fcf89a15f40a2cfbcd158a0af759f75b158b0a
+0ef681aff8e8afadbf01b0ebe0a7f76ca7dbeb03f87ef9b915f50afb33fb4b15640a
+f7e3fbb915650a0e3081aef80faec6c4e57712b4e174a6f76ca68ee113f7f717f919
+15f60a13fb31fc4c15ed0af759f75b158b0a0ef681aff8e8afc07601b0ebf849eb03
+f88bf9ac15f71f0afb179015f7200a62fb4315640af7e3fbb915650a0e3081aef80f
+aef7667601b4e1f78ee103f821f8f715f7210afb189115f7220afb74fc30158a0af7
+59f75b158b0a0ef7a689ad6bb2f7b9adf783b312b5e9f7aee0f734a4eaa613bff7f8
+ab1524fb09e3f763f76af0d1ec1fae06b196856c1ffc8a076f827f631e806915137f
+8bc98db31ef7ec8ba5f7347090057c426e564a8b08fb2f06757d91a61ff798f207ad
+8b967b916f08916c05878e88901ea28b8d8e0588ab86a88bae8bac91a98dab088d8a
+8d891e7506878887871f846d05846f837b678b0824f76306a39793a31ef72b06bf8b
+ad50926008a68e7df71ffb958b3d8b055f458c8b1ffb4efb0bfb28fb481f8bfb48f7
+14fb1ff7508a080ef74b81ba5caef773b2f70bac12ade1f78bdef761e1137ef82df7
+f1156fba66b6268b08fb03293efb30fb0fde2ef70e1fd98bbdaeafc10813bea75cbb
+61e78bea8bb9bfa1a9fffffacccc93fffff9b334ff00066666fffff58000ff000099
+9a6c6a4e7a658b648b2eba8bf71a8b958b968c9408f7b606f70956d5fb0a1e478b50
+63695908fbb5fb0415d09eeff2b7dc57fb2e1e137efb2148695c2e63f0f7031ef8ab
+bd15fb5d068d9ba5f1e18bd78b953e8c62080e8381aa74acf798adf7b9adce7612f3
+e0f76ce7133ef7ccf9c815b10a63fb5e15670a38fc8415680a13be690a137e6a0a0e
+fb7389acf7eec955a712efda1390f785f93315d60a4afbcd15f7230a13b0f7240a13
+d0f7250a0e83fb76a3daddaaaa74acf798adf7b9ad12f3e0f724b2ace713cf80f7ca
+6215f7160a65f92715670a38fc8415680a13ef80690a13df806a0a0efb73fb76a3da
+ddb2acf7eec955a712efda78b213e2f71d6215f7160ab2f82315f7230a13ecf7240a
+13f4f7250a0e8381aa74acf798adf7b9adcd7612f3e0f76ce7133ef788f94d15f702
+0aa73c15670a38fc8415680a13be690a137e6a0a0efb7389acf7eec955a7f77d7712
+efda1398f743f88b15f7030a8cfb2515f7230a13b8f7240a13d8f7250a0efb0281af
+f8eaadc87612a6ff00208000fffff78000ff00476666ff00ed999adf4bff00208000
+13e0f7aef9c815b10aff0070b334fb5115f7260a13ecf7270a13f4f7280a13eaf729
+0a0efb6181ac8976f82aac12bbaa7ad2f721d755ab1374bbf71e15f72a0a13acf72b
+0a13aaf72c0a13b4f72d0af747f8a915ffffb46666fb0b05fffff7e667fffff33334
+fffffcb333878bfffff4cccc8b849285928b928b938f9a9a08f707f7010513228896
+0574a1ffffe666668cfffff9999a8b868b858a888a080efb0281aff8eaadc77612a6
+ff00208000fffff78000ff00476666ff00ed999adf4bff0020800013e0f78cf9c315
+b20aff0092b334fb4c15f7260a13ecf7270a13f4f7280a13eaf7290a0efb6181ac89
+76f82aac12bbaa7ad2f721d755ab1374bbf71e15f72a0a13acf72b0a13aaf72c0a13
+b4f72d0af737f89e15d70a0efb02fb5ca8d6abff00368000ff00238000f8eaad12a6
+ff00208000fffff78000ff00476666ff0082999ac9b8df4bff0020800013f700f770
+2b15a2957d7671767d6d1f778b808f7095848488848b7fa4809c85ab8b08c8b9aab6
+b16ca3631f828b828a838908ff00156666ff00394ccc05ff0028ccceff0001e667ff
+00264cccff000ae667ff001f8000ff0013b333ff00398000ff0023ffffff00248000
+ff003d999a8bff003f999a8bff006a6666ffffafe666ff002e999affffad999aff00
+1ee666ffffc4cccdff00163334ffff9c1999ff0025cccc8bff0054199a8bc3ff0032
+999ac3ff003ae6668b0813f680ff0061199a8baa4d9f49ff000a8000fffffe333498
+ff0000cccc9492fffffc8000bb87a7fffff5b334c0ffffc6333293ff0002199a9eff
+ff9e4ccd8bffff9ab3338b32488b218bffff96999aff00568000ffffcfe666e3ffff
+de80000813fb00ff003cccccffffe8e666ff0049b334ffffe3e6678bffff9e33338b
+3affffd2cccc61ffffb033348bffffa280008b4fff002a800075ff00638000fffff3
+b3338ffffff56667fffffe199afffff66666fffffae6668f3e8f71975aff0039999a
+8bff001c3333ffffeccccdff00483333fffffcb3330867ffffa980009185059b9095
+8c9e8b080efb61fb5ca8d6abe076f82aac12bbaa7ad2dfc986d755ab13f800bbf71e
+158f5a8e5c8b61958d958c908b928b918b9289ff00156666fffffa8000ff00154ccd
+fffffc4ccdff001a4ccdfffffeb3330813f60067ffffa980009185059b90958c9e8b
+08a2957d7671767d6d1f778b808f7095848488848b7fa4809c85ab8b08c8b9aab6b1
+6ca3631f828b828a838908ff00156666ff003966660513f500ff00398000ff0003b3
+34ff0059199aff001dcccc8bff005c199a8bff00444ccd5aff0027b33347ff001933
+33ffffc3cccdff00164ccdffffd83333ff000f80008bc28bb4afa2ad8b0813f480f7
+2c0a13f900f72d0a0efb0281aff8eaadc77612a6ff00208000fffff78000ff004766
+66ff00ed999adf4bff0020800013e0f76bf94d15f7020aff00b3b3344915f7260a13
+ecf7270a13f4f7280a13eaf7290a0efb6181ac8976f82aacf7627712bbaa7ad2f721
+d755ab137abbf71e15f72a0a13b6f72b0a13b5f72c0a13baf72d0af70df80015f703
+0a0e8dfb5ca8d6abc9acf86ef7285cb2128eadf778e083c9f72dad13ed80f7c92b15
+a2957d7671767d6d1f778b808f7095848488848b7fa4809c85ab8b08c8b9aab6b16c
+a3631f828b828a838908a4ff0042e66605ff00224cccffffffb334ff00288000ffff
+ff3333ff00283334ffffff333391918ba085910813ee803b8e7a908bde08f81207cb
+95b1af1ea106d68bba719c3e968b998c948f84b986be8ab80813f680f72e0a13ee80
+f72f0a13f680f7300a13ee809fdbb9a5cd8b08bc06b095654e1ffc15078b387a863b
+8885858b769185b8ff0000e666ff002e999a8cff00266666ff0000199a08632b9185
+059b90958c9e8b080efbabfb5ca8d6abf85ab201e4daacc903f73c2b15a2957d7671
+767d6d1f778b808f7095848488848b7fa4809c85ab8b08c8b9aab6b16ca3631f828b
+828a838908ff0015e666ff003a999a05ff00278000ff0005ccccff0028b334ff0015
+8000ff0020e666ff0025199a89ff000a4ccd85ff0005b333818c71776d83718b0870
+85a9c91ff791f30795998f941f9f078f888d861efb0cb206cc8fb38b1eff00066668
+88ff00026664fffffb4ccd1efffffb80008bfffff78000fffffc199cfffff6b333ff
+fffae664fffff4b333fffff9b334fffff5cccdfffffbb334fffff38000fffffc8000
+7ffffffc999881fffffc999c8bfffff919988bfffff466688eff000699988bffff91
+199a085dffffffe666057d877f831f7e07868c8a8f1ec6fbc1068bffffbfcccdff00
+1966666eff0026cccd8608ffffdbcccdffffa933339185059b90958c9e8b080e8d89
+acf86ef7285cb2d476128eadf778e0f763ad139ef7a9f94d15f7020ad4fcd315f812
+0713bef7310a13def72e0a13bef72f0a13def7300a13bef7320a0efb7181c2f7edb2
+e59ce5d301e4daf706b703f79ef94e15f7040afb73fba1158e0a0e8d89acf7b6b2f7
+25f7285cb2128eadf778e0f763ad13def7f2f70e15f75bf7130797949a9690889382
+1ffb1cf72406cb95b1af1ea106d68bba719c3e968b998c948f84b986be8ab80813ee
+f72e0a13def72f0a13eef7300a13de9fdbb9a5cd8b08bc06b095654e1ffb27fb0807
+82817c81858e83931ff710fb5b068b387a863b8885858b769185bc8cff0032e6668c
+ff0028199a8bff002666668bff0032999a8abd8a91918ba08591083b8e7a908bde08
+0efbab81c2f75cb2f5b201e4da03b6f841157d877f831f7e07868c8a8f1ec6215806
+82817c81858e83931fc6fb300644aa6fb91eb98bbda1b2b789ff000a4ccd85ff0005
+b333818c71776d83718b087085a9c91ff700e60797949a96908893821f27f5f30695
+998f941f9f078f888d861efb0cb206cc8fb38b1eff0006666888ff00026664fffffb
+4ccd1efffffb80008bfffff78000fffffc199cfffff6b333fffffae664fffff4b333
+fffff9b334fffff5cccdfffffbb334fffff38000fffffc80007ffffffc999881ffff
+fc999c8bfffff919988bfffff466688eff000699988bffff91199a080ecd81b4f8db
+acb8c089c212e2e0f7b4a6b2bc13eef831f97d15b30a13deb40a13eeb50afb85fb72
+156b0a0e4b81ba84a6f7e9ace4c089c212e3daf758da44a61335f7d8f8d115b30a13
+2db40a1335b50a13a620fcdb15f10a1366f20a13a6f30a0ecd81b4f8dbacecbd01e2
+e0f7f6bc03f859f97c15f40a52fb71156b0a0e4b81ba84a6f7e9ace2bd12e3daf758
+da133cf7fff89a15f40a13bcd9fca415f10a137cf20a13bcf30a0ecd81b4f8dbacb7
+bf01e2e0b3a7f76ca7b5bc03f878f9b815f50afbccfbad156b0a0e4b81ba84a6f7e9
+accfc4e57712e3da56a6f76ca676da133b00f721f91a15f60a13bc80d7fd2415f10a
+137c80f20a13bc80f30a0ecd81b4f8dbac82abf5ab12e2e0e2b3ebb3e6bc13bff7ef
+f99c15d90a335615da0a34fb5c1513df6b0a0e4b81ba84a6f7e9acceabf5ab12e3da
+7eb3ebb3acda133b80f786f91015d90a335615da0a13bd80cafce515f10a137d80f2
+0a13bd80f30a0ecd81b4f8dbaccb7601e2e0f7f6bc03f896f9ac15f71f0afb179015
+f7200afb67fba6156b0a0e4b81ba84a6f7e9acf76e7612e3daf758da133cf83bf8f7
+15f7210afb189115f7220a13bc41fd0715f10a137cf20a13bcf30a0ecdfb5cb1f72c
+b4f8dbac01e2e0f714c9f738bc03f886fb1b158792858f828b75757b7b6e8b668b7e
+a08ba58bff002f8000ff0022ccccff001f3334ff004c4cceff003e9999ff004f3332
+ff0031e666ff0016b334ff0061999a8bff0079333308f778078bff00504ccc9cff00
+03b334c79291918ba08591658affffd733348affffe8cccc8bffffea80008bffffcf
+80008c5d8c85858b769185d6849c888b3a08fb8a07fb047cfb1afb3d1e5b8bffffd7
+199aff0012199affffe1e666ff001ce6665aba89d78bcc08f795078bde9a90d88e91
+918ba085915c8affffcf66668affffd8999a8b648b628c648c85858b769185c7889c
+868b3808fbb607fb60ff0083800064ff006680001eff0019999a8bff0017199a8dff
+0014e666ff0003cccdffffcab332ffffd96667ffffdab334ffffd799998bffffd533
+338b55b177bd8bb48bb39fa8b8080e4bfb5cb1f72cba84a6f7e9ac12e3daf71cc989
+da13bcf889fb1b158792858f828b75757b7b6e8b668b7ea08ba58bff00274ccdff00
+10ccccff003a4ccdff00326668a7ff00148000ff00088000ff001ab332ff0006cccc
+ff0023999aff0004199a91918b9a85910813da4b90829e8bbc08f75407a98fd48b1e
+8e888e861e868a7c8a7c8b6b8b678c698c85858b769185bc88987f8b4908fb55078b
+7889837d7f666b657b728b086d5999e41ff74a07a98fd48b1e8e888e861e868a7c8a
+7c8b6b8b678c698c85858b769185bb8799808b4a08fb540746a948ee1eb28bba9fbc
+b3908fff00094ccc8dff0000b33484ff00016666fffff233338effffefcccdff0002
+999afffff4199a0813bcffffcd4cccffffdb4cccffffebb334538bffffd7999a8b55
+b177bd8b08b48bb39fa8b8080ef7f89476f906accb7601f870f9bc15fffff0999aff
+0007b334fffff66666ff0000b3347dfffff799986c696a68666f8d828e859485b19c
+ab9cb0a6ac72ad79b279ff00091998ff0003ccccff0004199cff0008199cff0002cc
+ccff000919980867a666ad6daf08f7e2fb87156d0a0ef72c9476f82eac01f813f927
+15f7330afb48fb9915f7340a0e7789acf8dbaccb7601f790e003f7ccf9bc15b20aa4
+fd42156f0a0e3bfb7cdbf8baac01f7b7f92815f7330a34fdc815910a0e7789acf8db
+acc4ea12f743e97ae092e913f4f743f98315d80af73d16950a13ec84fd0915f7350a
+0e948bb1f8c8b69377e17612c8a913d8f8bb8915700a13b8710a13d8720afb5ff9ca
+15b10a0efb3f8badf7fab0957712bdac1390f794f93315d60a13b0fb4dfb7c15f736
+0a13d0f7370a0e948bb1f8c8b69377ccf312c8a9f73bf3139cf796f98215f7090af7
+b9fd8415f7380a13dcf7390a13bc710a13dc720a0efb3f8badf7fab09577f714ef12
+bdacddef139cf739f8eb15850a13bc2dfb3415f7360a13dcf7370a0e948bb1f8c8b6
+9377e07612c8a91398f7acf94d15f7020af7a3fd4f15f7380a13d8f7390a13b8710a
+13d8720a0efb3f8badf7fab09577f7757712bdac1398f750f88915f7030a13b8fb09
+4d15f7360a13d8f7370a0efbc489acf800adf77fad01e8daf3dc03f740f70e15f7f4
+07f70c9bd1c01ea38b92788f779070997da68ba58b94a08b9c8b9c809b7c98779d75
+97628b0848334cfb327081766c79867f831f8207878c8a8f1eb706998c877f1ffb95
+078b388086558885858b769185b58ca18cb48bb98ba88ab68a91918ba08591478e80
+908bde080e2581adf807b7d7b2e2a9a67701d9daf769e103f742f7ff15780a84aa15
+fffff9b333fffffa4cccfffffc4ccdff0001b3348b9408f708e40797949a96908893
+821f29a806cc8fb38b1e92878e821e7281407d638889838d7b9185bf8897908b3708
+86560782817c81858e83931fc8fc50068b648a79887d90839087978bff0006199aff
+0005cccdff0009e666ff00094ccdff0007b333ff0008e666ff000a4ccd97918b96ff
+fff6cccdff0016e666ffffecb333ff001dcccdfffffa8000ff00234ccd8b08f1f70b
+e8f733f70e31d6341fffffd5199a8bffffd9e6667a6c6f080eba89adf7c0adf71476
+ff008e4cccff001fb3341290cbecdcf76ed86de413fdff007b999aff02674ccc15ff
+00176668ffffffb3349efffff64ccc8bffffe0b33408fc8b078b68fffff5b333ffff
+fbcccdffffd64ccdfffffd3333086d890586ffffffb33389fffffd4ccd8b86088b78
+8d8905ba8cb48cb28bb38b9989e48bf75b8bc0ef8be18beb4ac234a4088d0713feff
+0032199aff00196666ff002ae666ff00334cce8bff00364ccc8bce6ee2fb4e8b688b
+5d89638b648bff00064ccd8dffffeeb3338b0829563a53779a7aa09b9e95a51f8bff
+0010b33484978bff00104ccc088bff001d4ccca2ff001fb334ff001f999aff00004c
+cc08ff007b6666fffee4b33415d00613fdf71dc63e31426d4ffb2c457e98ac1ff880
+04ac8b95e21e13fec3d66d25364e6d381f41060e7f89acf7c2b3f77cb36cac12f1e0
+f798e542ae13ccf74ff7e115f73a0a613a15f73b0a13eaf73c0a13dc898d0513ec8b
+3a89771efb7d0613dcf73d0a0e2381adf807b7f76bad12d5daf76bdd43aa13f8f72d
+c115f7bf07b2b3bf8d968b08c8bf4525fb065b362c1f6c8b769077a408b4f90e153a
+8b4f835b83088d7405878d8a8e1eab89059ffffffeb33495fffffa4ccc8b5208fc8f
+078b648b7b887408a0860594959c999498a872ab81b68b08f1f709e2f733f70e33dc
+341f5b8b6379696608f7a2f71b0713f4c08ba44c975d08aa8e7df720050e7489acf7
+c2b3f7b17701f5dcf798e503f74ff7e115f73a0a3af81a15fc1d078b6ffffff34ccd
+fffff2199affffd6b333fffffce6660870890587ffffffb33388fffffd4ccd8b8608
+8b748d89058be88dae1ea98baa89b88bdc8bcd90c4b1ff00298000ff001b999aff00
+258000ff003699998bff0040cccd08d766f701fb601efb01f73e06cc8eb38b1e9280
+8e821e56676e7f5780fffff54ccdfffff4b3348bfffff49998ff000ab333fffff4b3
+34bb7da1798b4d080efb0281adf808b6f7977701ddd5f76cd803f730cc15f7b507b3
+b4bf8c958b08c9bf4625fb065a342d1f6c8b759c77a30881f90d1556676e7f5780ff
+fff54ccdfffff4b3348bfffff49998ff000ab333fffff4b334bb7da1798b4d08fc4a
+078b648a7b8973ff0006b333fffffc4ccdff00064ccdfffffeb333928b9495999a93
+97a972aa80b68b08f1f705e4f733f70e38da341f5a8b637a696608f75a07cc8eb38b
+1e92878e821e0ebe81b0f8e2b401baacf84ae603f7b5f926152a8b325d4732908292
+85968bd2d9cfaae88bff0086999a8bff005d6666fb2c8bfb268bffffa9b333ffffe9
+199affffb83333ffffdb8000ffffd3199affffce66664e516f578b08fb1e8b54dd71
+e17f8ffffff64ccc88fffff4b334859057925b9554be86b863f70f8be08bd2aac6c1
+ff00426668ff003ccccdff00279998ff0061e6668bff00684ccd08ff00adcccc22ff
+00923334fb6b1e0ebe7fb5f8c476bfb099d201b0e2f841a503f92df97b15ffffdb66
+688bffffba1998ffffd88000fffff76668ffffab1998ffffd59998ff000c6668ffff
+cf999aa6ffff9ae6668b368b446c5055ffffbd999affffc33334ffffd86666ffff9e
+19988bffff97b3348bffff523333f4ffff6dcccdf76b8bec8be4b9cfe40886948491
+808b443d476c2e8bffff7966668bffffa2999af72c8bf7268bff00564cccff0016e6
+66ff0047ccceff00248000ff002ce666ff0031999ac8c5a7bf8bf71e8bc239a53508
+9787ff0009b3348eff000b4ccc9186bf84bb81c208ffffffe66806ff000633308bff
+0025b334c6ff001e33348b08a2a68faa9783a36f1f0e2581bcf803ac89c912b0e1f7
+4de213b8f85cf84015a09899a09983a1691fffffdd80008bffffcb3334ffffea8000
+6fffffc9e6660813d8ffffe7e66695ffffe18000ff0005999affffdbe6668b082821
+32fb22fb15d332f7121fc78bc09ebddd8794838f828c695f6075608b08424ed5f709
+f702bbcdcd1fc68b93688f688e709982a08ba08ba7988baa8ba5fffff33334ff0016
+999affffe88000ff0010b3320813b8ff000a19989bff000eccceff000bb334ff0014
+66668b089c8b9e829b8b080ef589adf793b2f7b3ad01f5e0f807eb03f753df15c80a
+60f8c515c90a0ef74b89adf8d9ad018dcaf70edcf80be703f7a0d815f88107aeae93
+bcf76cd6fb43fb2efb5efb1159fb21298098ab1efb3e54158b758d8905ba8cb38cb3
+8bb28bb289f28b08f721f74ecbf78af74efb2df72dfb541f4b8b5089638b678bffff
+ea66668dfffff1999a8bffff8e199affffffb334ffffd8e666ffffa84ccc8b60086a
+a0839b9f9998a01e8bff0013999883ff0009ccd08bff001399988bff00234cccabff
+0010b334ff00216666ff00024cccff001b999aff0002b334a8828b6508fc7e078b6b
+ffffeee666fffff54cccffffdd199afffffdb334086d890587ffffffb33388fffffc
+4ccd8b86080e6b89adf7cfadf776b170a8967712b5e45ba5f7abdc13c5f818d9156a
+7e7e452147bef707d4a9d7f71e1ee40613e534f79815e28b876a1ffb514d07fb4924
+5afb30fb0ff70054f7011fcd8bb18dcd8bb78ba58ab78a08a3078e8a8d881e6d8e05
+6f8e7f978bab08f884078bb0948daa8e0813d3a98e058e8c8c8e1f8ba40513e3fb07
+89fb6e8b0513cb5e8b66906c93087dfb2da5880513e5a5e4b09bbb8b080e3781ba84
+a6f7efaef76bad957712b7e15ea5f783da13a5f7f2f710157b0a132bd1f814151333
+7582748b808a08fb3306132b4f8b788f7091087dfb2aa5880513b597b9a9cabf8b08
+f70e069d9086781ffb5b07848989841e878b629c6a8b498b5f756365606071508b41
+8bfb0fc931f7008bb28bb09fbcff00284cccff0004ccccff0003e667ff00073334ff
+0001cccd8b84087396688b1e93888e8c938d081373a19db19ac89291918b9a85914b
+90829e8bbc08f85907cc8fb38b1e92878e821e0e22fb7facf8f3ad01addaf762bf94
+d803f77ca3156da40554b769d48bbe08f737dca4bee8b5fb023a1e8bfb06435a4873
+08937b05968215e4aaf700cb8bf71a08f7093de6fb0f21fb0845fb371e8b34bc57dc
+4c08d25305af6fbb638b758b606b7a578b718b6e9977b178af7593818b087d73836e
+6acb50eed1cea6d71f8bb554ba65a9080e6889a870b2f7b4adf788b271a812f71dad
+f754dc1376d0f919157dfb20a6880592b6adc7bf8b08f72c06a39783731ffb68fb1c
+07678b839b84a70884a9058f888f871e7506898a89891f8e7290668b6a8b69855e89
+7a088d88a28b05908e8f8e1f91aa0591a8969aad8b08f71cfb9306707d85751efb38
+06498b6fc07bd4087186a4fb34f7a68bd98b0513aef715898ba1058e8a8f841e6e06
+637f9ca71ff88807aa999ab11ea806928c8f8e1f8ba0fb168a050ebc7fadf756b7f8
+00ad01f89de503ecf89f15f73e0abbfbdf15f73f0a0e3d7fadf7c4b2f797ad12b1e0
+5bd213e8f7bbf9261522fb0756fb051f8b31d863a9800813f047783f518bfb008bfb
+25f71c6af28bdb8bb8a5c394089cf7246d8e0573fb013764468b083d49b7f70ccca9
+d6f61fec0696919198968594801f470613e8fb076ee0bddec8b4db1fee8ba24b9d3b
+08aa9078f72305589075a4448b080efb0afb40b8f856b1d677f751b370a812f0dcf7
+48acb6a813f7f0dc15fb48586f6a1e7d8bfffff94ccd93fffff8b33395fffff64ccd
+ff000d3333fffff4b333ff000dcccd6c8b087d737d7567b579a11fa48bb78cb8b1c5
+b9bac98bf71408f770f71307ad8b98828e6e088e7205888d86901ea18b8f8e0588b3
+8aa68b9f8b9f8ca98eb308878f758b05878887871f887205886f7f7d688b08fb13f7
+6606a39795a31ef406d68b9d63a14608a89005fffffaccccb4fffff0e668ff006066
+68fffffe9998ff00079998ffffff999aff00024cccfffffeccceff0000b334fffffd
+99988bffffee8000fffffc9998fffffab334ffffff6668ffffe7cccc8b08ffff02b3
+340613ef648b628c5c8c0813f789898b770513ef8b888cfffffc800092ffffff8000
+08a98905ff00266666fffffd6668ff000c999afffff499988b6c080efb2ffb7caff8
+deb2f784a8016dcef7d8d203f741f81a157ffb040577fb4e91fbb4338b758b929f84
+9785998093798b08777f787c78a966c31ff70c8b9bf764bdf822088d9bf18b059499
+8f941f9f078f888d861efb038b99f7040598f5a9a19d8ba28b95688e7b8e789b859f
+8b089f979c9fa871b23b1f518b4d4878fb28876e7c72678b08670679867f831f7e07
+868c8a8f1e0ef71281aff783aff7d5af99d212b0ebf821e063ac13fcf932f97b15ff
+ffdbb3348bffffbab334ffffd8e668fffff6b330ffffac4cccffffd2b33499ffffd6
+b334ff0017ccccffffa480008b08fb3bfb41fb17fb70ffff4c3333f710ffff76cccd
+f7531ff70a8be8a4cfc5809486938b9608f708078bff002333339cff0009cccda88e
+91918ba38591738a728a638bffffde80008bffffd180008c5f8c85858b739185ff00
+36e666fffffbccccff001b199afffffc4cce8bffffd7e66608fb2d07696b4885558b
+08fb3237f73df718f743ff00718000f70cff007480001f13faf7258bb438a535ff00
+0b4cccffffff4cccff000a66688dff000b4cccff0004b334fffffd8000b5fffffb80
+00b37bd3ffffff1998ff00003334ffffff199cff00001998ffffff1998ff00003334
+ff0003e668ff001b6668ff000d3334ff001a3330ff001c9998ff0004e6688d8c8e8b
+8e8b08908b938a928b08a2a68faa1f9783a36f1e0ea1fb7cb6f9bba801f754bbcdd4
+03f7b777159a648b608b75086c7c6974798197a61e8b9ba0d0a9b808f759f8e415fb
+39fc4f888bfb2ef84d0588938a918b918b9bff000d6666ff0005e668ff0022999aff
+00041998089c8d05908c8e8d8b90088b9e898d058b32896864478d8b1e89898b7805
+8b868ffffffd66688fffffff9998ad88a486996308f751fcaa055c336c518b59086a
+a064c1cdb9c1d01e8bb281c472d508f754f8930598ae9c93b68e90ff00004ccc8eff
+0002b3348b90088b9e898d058b57896864428d8b1e89898b7805868f888f1e9d8905
+ff00318000fffffa8000ff000a4cccfffff8e668fffff43334ffffe09998080ef70b
+81ba64acf7e2d557bff75ea9a67712e1daf756daf75bb1139f80f7bef81715b49f7f
+3b1ffb34078c2fba56f38b08dbdfd7f74b1f13af80f70c6ed146707d78791e8b6ca9
+86978aa886a9708b2b08295825405c71a8cd1ef72c07135f80f265bf441effffcee6
+668bffffd3199a7e4e47fffffc999afffffc3334fffff99999fffff5cccc8b9908ff
+0000cccdf77505cc8fb38b1e92878e821e7281407d638889838d7b9185bf8897908b
+3708fc49078b38fffff4333387518785858b769185ff002933338cff0019999a8cb6
+8bb28bff0011b3338aff002a199a8a91918ba08591ffffcd33338f828f8bde08ff00
+a3e666078bff0015199a94ff000c4ccc93ff0008b33408b1ff00254cccff0026999a
+ff0015b334ff002766668b080efbc581c2f8eaa8a57701e5d603e5f8c715fc6e0744
+a66fb91eb88bafa1b2b7fffffcb3349485ff0005999afffff74cccff000266667177
+7c83718b087085a9c91ff85207cc8eb38b1e92878e821effffe6e66681ffffba999a
+7effffd7800088088d73058b88ff0002cccdfffffe3334ff00033333ffffffcccc08
+ab89059f957e4a1f0efbbe89acf7b6b2f792ac01f5e003f753f70e15f75bce079794
+9a96908893821f3ff737068bde9c90d18e91918ba085915f8affffd080008affffd9
+80008bffffde80008bffffcf80008c5c8c85858b769185d1889c868b3808fb374607
+82817c81858e83931fd8fb5b068b387a86458885858b769185b88cff0030b3338cff
+00244ccd8bff0023999a8bff003066668ab88a91918ba08591458e7a908bde080eb5
+8aa8f7aeadf7a6a874ad12f5dc13d8f822f87315ff0036199aff00459998ff0038e6
+66ff00486668a78bc28b7d3cb98b089f9f9ca1af5bb4481f418bffffd9666644ffff
+c3999a420821fb1405ffffea4ccdffffe5ccccffffe9cccdfffff6199affffdce666
+fffffd666608ff00afb334078bde9c90d18e0813e891918ba085915f8affffd08000
+8affffd980008bffffde80008bffffcf80008c5c8c85858b769185d1889c868b3808
+fc25078b387a86458885858b769185b88cff0030b3338cff00244ccd8bff0023999a
+8bff003066668ab88a91918ba08591458e7a908bde08ff00bae66607ff0021e6668a
+ff001d199afffff4ccce9fffffe64ccc08f731fb5a059f7199708d7b8b888c888f8b
+9f8c8f8ca98bb28b9a8aba8a91918ba08591798e678869b508fb6ff7980583948693
+8b938b92ff0004ccccff00033334ff001e3334ff0026cccc080e3889acf803acf77d
+ad01e1daf3dc03e1f87015fbf6078b388086558885858b769185b58ca18cb48bb98b
+a88ab68a91918ba08591478e80908bde08ff0056e66607ff00133333ffffff8000ff
+000e199afffffe8000ff0009b333fffffc999a96fffff88000ff0009199a82ff000b
+e6667b08d42905ff001d6666ffffd88000ff0008999afffff080008f7cff0000cccc
+fffffd199aff00003334fffffde6668e8b9f8c978ca98baa8ba08aa98a91918ba085
+91698fffffe6b334ff00046666ffffe54cccff0021999a08fb18f73a05fffffc6666
+ff00048000fffffc999aff000480008b908b8f8b8d8f8f08e3e605a9abae93b38f91
+918ba08591668a7d8a678b658b748c668c85858b769185c387ffffe84cccffffdcb3
+34fffff6b334fffff44ccc08746effffe0b33469ffffe64ccc78ffffe9cccdffffef
+999affffe51999fffff43333ffffed199afffffd666608ff00efcccd07f70c9bd1c0
+1ea38b92788f779070997da68ba58b94a08b9c8b9c809b7c98779d7597628b084833
+4bfb321f0efbdf89acf7b6b2f7ada9a67701eada03f742f7d515ce0697949a969088
+93821f3ff77306cc8fb38b1e92878e821e7281407d638889838d7b9185c58791888b
+4008fb5b400782817c81858e83931fdefb5b068b3880864e8885858b769185ae8cb0
+8cb38bb38bb18aac8a91918ba085914e8e80908bde080e4b80c8f8dfc801f7f0f8fc
+15ffffa26666ffffc91998fffffd999aff0007e6680568f70a53966d8b648b6b6c71
+65ff0002199afffff33334ff00079999fffffe3334ff00074ccdfffffd99989f9aa5
+95a48bff001780008bff001f6666fffff11998ff0021b334ffffa94cd008ffff9c66
+66ffffc599989c6dff005e6666ff0037666605ff00028000fffff84cceff0002999a
+fffff7e666ff00028000fffff76666089860fb71fc47a47f05a291a48fa68d08f723
+f7ffd2fb8105a72ea35fbd8ba88bb2b09db2fffffcb33494fffffa9998ff0004999a
+fffff4b334ff0002666676717786768b6b8b7fab64f71808ffffa1999aff01391998
+ff00646666ff003ae668050ef7a97fbb85a2f8c9a812f0dcf767dcf767dc141c13bc
+f992f70815f85e078ba7ff000f3334ff000ae668ff0027ccccff0003199808a58d05
+90ff000066688eff000299988b90088b9e898d055a8a6e8a598b5b8b738c598c0889
+898b78058b868ffffffd4ccc8fffffffb33408a18905ff0027e668fffffc6668ff00
+0e1998fffff799988b6d08fc6407585a5a72658b08626ba6cd1ff851078ba7ff000f
+199aff000a3334ff0027e666ff0003cccc08a08d0590ff000066688eff000299988b
+90088b9e898d055a8a718a5b8b5b8b738c598c0889898b78058b868ffffffd4ccc8f
+ffffffb33408a18905ff0025e666fffffc9998ff0010199afffff766688b6d08fc3d
+078b7c8b7f8c7d57575f77608b08626ba4cd1ff853078ba799ff000a1998b4ff0003
+e66808a08d0590ff000066688eff000299988b90088b9e898d055a8a718a5b8b598b
+708c598c0889898b78058b868ffffffd4ccc8fffffffb33408a68905ff00274ccdff
+fffd1998ff000eb333fffff6e6688b6d08fc3c0732a042e91ec68bcaa5c9c7955cb2
+64c68bce8bc6b0bebc088d8a8936a28b05137ca19dbd98c9960888a25b9005ffffea
+9998ff00023333fffffc6668ff0005cccd8bbd080eeffb4fa9f73e76f906a7015fcd
+ddb8f82db803f3e3154f8bfb4d4d1e808b858f8895869f7c9f7d8b088373886b77ab
+6ebaf7048df722f71a1ff7f207ad8d9a931e918b96809c7508f7f1fc4d05967c9885
+9b8a089992959e1ff8ac07a99aaab21ea6068f8f8e901f8b9e898c058b438a646741
+8c8b1e868a8b7805869488901ea506b49869701ffc0f07788b78861e828b7da76eb0
+08fbf1f84dfb168b88898b7905869288901ebc8ba1538d7f080e5ffb7ea8f75fa8f7
+fca377bb12ebdaf765da13dcf743f84b158d8a8c881e13ec6d8061824180088d73b9
+87059a8993818b5908fb8d078b6e8180688808778905868a87898b86088b788d8905
+8bce8db6b5cd898b1e8d8d8b9e058b90878d868c087c8d05689081948ba808f78607
+13dcc1c7b39cb98b08c3986a451ffc54078b6e80826986087c8905868a87898b8608
+8b788e89058bca8db3b7d1898b1e8d8d8b9e058b90878d868c08768d056a8e80968b
+a808f84d07e476d02c1e558b597d47400888060ef681aff7afb2f7a6af01b0ff0060
+4ccdff01b4b334eb03f92ef7dd15650affff9eb3349e15fffe4c999806ff00066667
+ff00c2b334ff005fb333ff004f4cccff005f999a8bff007b80008bff00659998ffff
+9fccccff000c999cffff4e333408ff00014ccc6415ffffffb334ffff4d999affffaa
+1998ffff976666ffff8e33348bffff89e6668bffff906667ff0066333384ff00b4cc
+cd080ef681aff8e8afa5e112b0ebf849eb40b013f8f7dff90215ce0af7e3fbb915f7
+400a13f4f7410a0e2d81aef80faeb1df12b4e1f78ee16aad13f8b4f76115f7420a13
+f4f7430a13f8f7440af759f75b158b0a0ef7befb48acf71dadf8d6b07cad12afebf7
+ede0f737e013def7e6f90415c08bb978b36708fc90076c72697f628b08fb17fb00f7
+03f7541ff766f702e2eb1ef86cfd3c15f8f407bb8ebb8b1e92fffff980008efffff7
+80001e13ee647a6d894d8b608b55ff0001800080ff000580000813deff0009800084
+ff000280007f1e808179787a8560a25997598b08fb47fb1cfb2cfb58fb59f724fb0f
+f7401fdd8bd6a3c0b908f87e0713eeff00318000ff00098000ff00028000ff005480
+00c99289481efce1078b387a86458885858b769185bc8ca98cbe8bbd8ba88abd8a91
+918ba08591458e7a908bde080ef707fb7eacf753b7f7e5ac8cad01afe1f77cdaf70c
+da03f7f6f7e415fbac0771776289788b085133b5f72bf3b6d5db1fb58bb373a65e08
+f7aafc5315f8bd7a07758b6565438b6d8b3a8c6e9a6f9a6b8f698b08fb0e3027fb18
+2ecbfb10f7241fc48be2a9b8aa08f7c8079e93a38f958b08acad8b5f1ffc4b078b38
+80884e8885858b769185b58ca58cb78bb68ba48ab68a91918ba085914e8e808f8bde
+080ec689acf78fad73a8ff00a5cccc76ff008c3334b270ad1291ff004ccccdff0090
+3333e0f775e813d780f7ccf8be15f7450a13b780f7460a13bb80ffff6f8000f7d815
+ffff8d80005cffffb2ccccffffcc6668ffffd86666ff001a6666fffff53332ff0013
+3334a3ff00146666ff0010ccceff001933321f8bff0009999cfffffb3333ff000999
+98fffffd999aff00099998fffffc6666ff000accd0fffffd999a918bff000acccc08
+ff0021ccccff002f333393ff00248000ff002880009f8b381efc25078b387a864588
+85858b769185bc8ca98cbe8bc38bb18abd8a91918ba085913d8f738f8bde08f73e07
+13d780a184a388ae8b08f74ac2f70be0c664f6fb4d1f13bb80718b4484638b080e3f
+fb7eacf753adf805b9f775ad01dbdaeedcc3e103f743f7e315aaabff0028cccda5ff
+001d33338b08cbc243fb05396e25fb041f798b689079ff0010199affffebe6669dff
+fffc199aff0005cccc8bff0024199a08f74e078ba0ff00033333ff0009ccccff000c
+cccdff000d3334087bf72b15f72e9ba3ac1ea98b917f99689379967da08b9c8ba3a0
+8b9f8b9c809d769b719d718e658b08375643fb2f1ffcd9078b3880864e8885858b76
+9185b58ca58cb78bba8baa8ab68a91918ba08591448f808f8bde08f700078b98ff00
+03cccdfffffeb333ff000a3333fffffbcccdff00188000fffff6199aff001ee666ff
+fffa6666ff001f999a8bc38bbd9cb4b2bab9a6c98bdc8bf540ed258b668b54725e5d
+08fffffce666fffffcccccfffffb199affffff199a8bff0007199a080e6c24a6d5a8
+f761aef784b569aecfa712f5dcf779dc13eff885f81815f712fb06affb0c1e13f76b
+8b748b768a08a407a7999bb41ea506908e8e901f8b9e898c058b2e8a6764348c8b1e
+898a8b7805868f888f1ea606b29a7d6d1ffc8c076f7e7c621e7006878888861f8b78
+8d89058be88daeb3e1898b1e8d8d8b9e0590878e871e7106637c98a91ff73607e58b
+9089917d08f2fb7d05a55cb764c78b9a8b9c8e958f08889f05638b6cad74b60823f7
+8305ba96e3bf8be0083a8a152539792a1e59f7840613efa390a68eaf8b08c7dd7026
+1f0efb087fb0f8ebad01b7dcf781d003ecf90b1587568359825a08a986059ecda7df
+ee8bcd8bb7588b4e8b382865617c376d2e628bfb0d8b25de2df7078bed8b9b9ca38b
+089f8b94869c8b8dbe92bb95d7086d8e0577305c4c328b3f8b51b78bdc8be6bda6c8
+a3d3a6f70fbd8bf7098bf526ce348b2e8b8d785483080efb7481a78e76f82da912b0
+ce58a3f748c87ea213b2f7dcf72015748c058975825d727180806e79658b688b57a5
+8bbc8bb6a3a8dbad0813acd3abb1a08bd68bce50b83c8b598b68826b7b866b87698a
+6708a38a05a0ddc89ba08bb18bb27f8b548b63787755770813b23a6d49678b3b8b28
+f470ba8b081372ae8ba88ea592928d908b928b908b948b9489080e8889ac6cb6f8c4
+b56cab12f878ac7dac1328f808f8ef15f7470a1394f7480a1364f7490a0efbb6fb68
+a8f944a6f71fa6128db3f3d65cbaddc913fa8df8ed1553b363cd1e998ba294969285
+75875f8b7108fc15078b278b3ebc5ea276b27e9e8b08c2ada6a1a879917e1f7a8b83
+7b857e867e857e7e8b7e8b7d93819d809b81aa8bf70f08f88907f72462b3441e4f5c
+664f1f13f6f74016687269626173acafaea2aeb61eb8a0656b1f0efbab7fc3f7efb2
+01e4d5d7a703f738fb2515a8d5b8e51f8bff000acccdffffff3334ff000acccdffff
+fe1998ff000b6666ff000ce668ff0009199aff000c666696ff000b6666ff000ce666
+89ff000a4ccd85ff0005b333818c71776d83718b087085a9c91ff791f30795998f94
+1f9f078f888d861efb0cb206cc8fb38b1eff0006666888ff00026664fffffb4ccd1e
+fffffb80008bfffff78000fffffc199cfffff6b333fffffae664fffff4b333fffff9
+b334fffff5cccdfffffbb334fffff38000fffffc80007ffffffc999881fffffc999c
+8bfffff919988bfffff466688eff000699988bffff91199a085dffffffe666057d87
+7f831f7e07868c8a8f1ec6fbc10644aa6fb91eff0017cccd8bff0018e666ff0005e6
+66ff0017e667ff000bcccdff00004cccfffffc3333ff0000199a878bfffffc199a8b
+7383737880717b519c8b5e08779979a11e0ea189acff01c7cccc76ff008c3334b293
+77128eff004ccccdff00ceb333e0f763ad13eeff00ef8000f8f215b095654e1ffc15
+078b387a863b8885858b769185bc8caf8cc28bc18bae8abd8a91918ba085913b8e7a
+908bde08f81207cb95b1af1ea106d68bba719c3e968b998c948f84b986be8ab80813
+def72e0a13ee6988fb03863c8b08fb6406fb07ffffd18000ffffb2ccccffffcc6668
+ffffd86666ff001a6666fffff53332ff00133334a3ff00146666ff0010ccceff0019
+33321f8bff0009999cfffffb3333ff00099998fffffd999aff00099998fffffc6666
+ff000accd0fffffd999a918bff000acccc08ff0021ccccff002db33393b11e0efb84
+81c2f7edb2f77fad01e4daeedc03e4f86b15615d077d877f831f7e07868c8a8f1ec6
+fbc10644aa6fb91eb98bbda1b2b789958591818c71776d83718b087085a9c91ff791
+f30795998f941f9f078f888d861efb0cc406f72e9ba3ac1ea98b917f99689379967d
+a08b9c8ba3a08b9f8b9c809d769b719d718e658b08375643fb2f1f0e8dfb44b0f918
+f7285cb2128eadf778e0f701e296ad13bef7f2bf15f85807cb95b1af1ea106d68bba
+719c3e968b998c948f84b986be8ab80813def72e0a13bef72f0a13def7300a13be9f
+dbb9a5cd8b08bc06b095654e1ffc4807fb3cbb3ce71eb48bb18fa79ea29c969f8b9d
+8ba171a1798b748b807b82787c65847f6b8b086c73bff71f1f0eea81b4f8dbacb6db
+01e2e0f7f6bcd4bb03f8fcff0260cccc15f74a0a0e4b7fb885a6f7f0a8bbde12e3d6
+f753d6b5ae133ef76d8115b28bba9fbcb3908fff00094ccc8dff0000b33484ff0002
+8000ffffe68000ff00088000ffffde80008b8b9388ff00048000ff00008000ff0006
+8000ff00028000a19dae9ac89291918b9a8591084b90829e8bbc08f754078bff0013
+ccccff0001b334ff0026999aff00013332ff0017e666ff002a6666ff00098000ff00
+11b334ff002133348ba508ba72b4656e7a7c731e8b779975ad8a9e8a93828b808b80
+757d7889088a0784ffffff666681ffffff999a818b6b8b678c698c85858b769185bc
+88987f8b4908fb55078b7889837d7f666b657b728b086d5999e41ff74a07a98fd48b
+1e8e888e861e868a7c8a7c8b6b8b678c698c85858b769185bb8799808b4a08fb5407
+46a948ee1e0ed27fadf8c9c512a3a579e3bcbaf769c4bae37ea513def712f8df15ab
+96837d1f8b5dfb1dfb098bfb1908fb29eafb18f75cf759ecf728f7191e8bf71bfb1b
+f7078bb98b999893ac8b0813cdbf8b9f838f5708a58b84f70a458b052a6c78691f13
+de8b4cf3fb078bfb2608fb1547fb09fb1efb163ef4f7221e8bebebf71e8bdb08b175
+a3481e2b8b0513ec84fb0aa58b0591c3a18fbb8b080ec781aff8e4a776ac12e4e0f7
+4bd3f71bbc13bce4f77015fb50f661f714f72cf71dbff7def72d63f719fb0269437e
+5671a084971eaa8b92ad8c938e9c97929d8b08ea92fb7158fb6c2dfb03fb26fb1677
+f0f70e1ff7d90713dca7999bb41ea506908e8e901f8b9e898c058b2e8a6764308c8b
+1e898a8b7805868f888f1ea606b29a7d6d1f0eb989a8f8e3a775ae128bc6f79adb13
+d8f77bf84715e5fb2e8bfb66056f7d7b621e7106868888861f8b788d89058be88daf
+b2e2898b1e8d8d8b9e0590878e861e7106647b98aa1f8bf772f729f7ad059cab9997
+a98b08a006928e8d901f8b9f898c058b3d8a827e3c8c8b1e898a8b7705888c87901e
+a9069f9088801f8b868882837d08fb13fb7f41f7110513b83bf71956c7508b08455d
+586a7d9478a1a3919e9c1f8b9589938b928b9c9f8f938b08ae8bba3ac9fb00080eaa
+fb7ac2f8d5a8c8cc01f836f7e215a7ccb3e8ab8b938b97898f8695819c87998b08a0
+9d9e9fa37ba2541f4b8b563756fb0c8b8b29fb747e6d08fb02f79605879489938b91
+089b9891a990918e901e8b9d898e058b43895c6d5f8d8b1e89898b7705878f88911e
+ad8b96809b6508f712fbb905937794708b818b828981857f724e68357c8b818b8492
+8195859381917c8b087b75826d67b2809e1fd28bafdfa9d3dbf755ecf76b8b8b080e
+948bb1f79fb2f796b6937712c8a913e8f8bb891590c395c697bf848d808e7e8b6c44
+7254fb018908fb5587057affffff999a83ff000566668b948b908e919094ff00234c
+cdff00334ccdff003d6667ff0057b333ff00434ccce908f7410697949a9690889382
+1ffb2e06ff003f999aff00586666ff00426666ff005a4ccec0ff00444cccff001519
+98ff001b3334ff0002e668ff0006cccc8b968b92868f838b7f8b6c896d8b08fb7106
+13d8710a13e8a0d0b1ff00239998d6ff0001666808f7678f05ff0005e666ff000019
+98ff0004199afffffce6688b858b8688858684ffffd38000ffffc78000ffffbfcccc
+ffffa96666ffffbdccceffffa4199a08ffff6ee6660682817c81858e83931fff007d
+199a0646ffff9fb333ffffbb8000ffff9db333ffffcf6666ffffb7999a858389838b
+8408819086991eff016c4ccc06a6ff0063b334898b1f0efb3f8badf737b2f730b095
+7712bdac13d8d2f84b15f7360a13e89fd4aaff00114ccca9ff0000b33408f7148e05
+ffffe2999affffceb334ffffdcb333ffffc9333266ffffc9199a08ffff96b3330682
+817c81858e83931fff0056cccd06ffffd7999affffc53333ffffd6e667ffffc6b333
+ffffdbb333ffffcf199afffff76666fffff46666ffffff999afffffc999a8b860884
+93869a1ef7cc880597ad98bf92bdfffff98000ff0003b333fffff48000ff00024ccd
+7f8b087d6e05ffffe68000ffffcb3333ffffeb999a75ffffcbe666fffffecccd08fb
+1906aeff002c6666ff0029999aff003a8000ff0028ccccff003c199a08ff004f999a
+0697949a96908893821fffffc1999a06afff00363334adff00356666ff001a6666ff
+002b6666ff000f4cccff00193334ff0002b334ff0007cccc8b8f8b8f868e848b868b
+6f896e8b08fb4b06ffffdfe6668bfffff3999aff0004999afffff18000ff00056666
+080e98fb67b0f99fb201f86fe403f73bf91915f74b0a0e98fb67b0f99fb301b9e5f8
+15a503f84ff91915fbf706778485831f8b81937a937d08f73bfbc205fb1b704c288b
+fb0308fb1ff719fb0ff734dbf72aaecda281a6681e718b6f7d7e766b5a596d548b08
+332bf70deaf733f706c1d01f9a8b978b998808fb57f7f5f78d8b05d58aa8388f5e08
+a58e76f750057386697a728b080efb27fb79a8f8e2b201a2d6f784a190a603f7d1f8
+4115fb7a06798587821f8b858f81917e08f717fb7f05fb0a814c458b21082bd828f7
+24e6c9b3ab9b839a761e748b7b847e767f746f74628b085a33baf70ae0cecad91f9d
+8b9e89a18608fb31f7b0f7228b05a98ba97f9d3708a6906bf72c7587057b82897f1e
+0efb27fb6676f833acf73eb5977712b79fd3cdf70ed913eef798f76d15f70bf73e05
+13de94988e948b970813ee90868e821efb9a0613de6c8b96926890087bfb0f9f8905
+13ee97cb9692b58b08f7468bfb2dfb6d05a190a9949d8be08b9a3f8b578bfb0d559e
+63715266666e8b5308729e7f9c9aa19ca51e8b9684968b9a8b908c9fb1a3b1a4f70f
+8b8bf721088be953c2358f080efb318bccf748b2f73a76f726ae12c8d6f74ee370a8
+13fcc8f86815769e79a09ca9ff0011e666ff0016199a1e8b9389918992899285948b
+9308a4a5afd4afbe722b1e8bffffc2199affffea8000ffffcd6666ffffc94ccdffff
+c6800008ffff8033330682817c81858e83931fff006080008bffffd7800063052927
+7b5b8b50088bbe8dab1ef74306abb9898b1f13fa98c095d68ca985907e8d81897a44
+7a72678b08fb46068bbbd0cf909008ff003d6666c6ff0044999a8b0597949a969088
+93821f660613fcff00388000ff00368000ff002a8000b78bff004b800008f70033b7
+3a1efb0346394f1f0efb3a7fadf7ccb9f713c701f7c5d103f7c5f748152d5a4b3f1e
+6b8b7ca1819e829b7f97778b08797b7e7864d96bc4f1e5d3f71ce54be9fb1a1f5889
+9bf715f7588b8b8d93c5fbd88bd95575fb5205a695a18ca78b08cbe14f2d1f0efb3a
+7fadf78ab7c4c701f7bdd103f7bdf71e15395c69501e6b8b719e809f829b8099778b
+08797b7e7864e46bc4f716b6e5d7d753dd281f758b58877d8a089cc9f7588b8b8d93
+c5fbc58bc65469fb0c05a994c990a78b08cbba454f1f0efb777fa78e76f81cb212ac
+a699d555c4f70dcf13bad5f81a154c078b40b976d36bdb698b6e8b608b5a4f6f688b
+668b699d819671a582bb8aa108708a05137a92fb2205948d948c908b928b908a928a
+0813baa484b187ad8bbb8bf705a88bee8bdb60af3aa9559f7d9f8bb308bbed079499
+8f941f9f078f888d861e13b6fb02f72f0652778b78058b3f7d64528a08898a8a881f
+6c07888c8a8e1e0e40fb6476f905b68e7712dad6f78dde13d8f7c5f82015d4a45431
+1f8bfb072524fb273708f80207d5c7b1a0b28b08fb764015fc57078b6a81796d8208
+7a8605868a8a888c86088f72f719af8bf505f761f704f713f7068bf7288bd36cdbfb
+118b578b4d6a4d5308888b8ee40513b8ff00026666fffffe6666ff0000999afffffd
+999a1effffe38000806482ffffb9800080088d73b68705ff000e6666fffffe4cccff
+0007999afffff5b3348b59080efc2e9676f9587701d4b203f7048115f95864fd5807
+0efbc89676f9587701d4b2cab203f76a8115f95864fd58074c16f95864fd58070efb
+9b9676f7bfadd3adf7a17701f71cb203f7b7f7d715fb08d3f708adfb08f7a164fba1
+fb0369f70343fb0369f70306fbbfb2f7bff708070efbc781f5f8c67701e6f503f724
+f92615200a56fcfb15210a0ef93489adf8ceb66bad9177e07612f5e0f807ebcda913
+aff753df15f74c0a13cf60f8c51513af520af9afbf15f7020af7a3fd4f15f7380a13
+cff7390a139f710a13cff74d0a0ef88389adf7fcb09577f756ad12f5e0f807ebbfac
+139ef753df15f74c0a60f8c515520af950fb2415f7030a13befb094d15f74e0a13de
+f74f0a0ef7d581ba66ad87a6f7e3b072aef761779ca9a67712b2e1f770daf704ac13
+89e0f7edf710157b0a80fffef84ccc157c0a132be07d0a1381e07e0af7e8ff01c2b3
+3415bd06a8b9b1b8aeb2081305e0f7500a1309e0fb094d15f74e0a1351e0f7510a0e
+f741fb40b8f711ac6cb2f8d3ac12f5e0f7aface1e013bef729165c0a13de5d0a13be
+5e0a13de5f0af8a5f89f15f7190a0ef744fb6eb7f740ac6cb2f7f3a7f71aef65ac12
+f5e0f7aface1ef35da13b300f729165c0a13d3005d0a13b7005e0a13d3005f0a139b
+80f850f8f015850a13934099fbae15870a0e3bfb73b7f745acf7f6a7a877f711ef85
+a9a67712eadaf737ef35da13fb80f7e5f8eb15850a13f34099fbae15870afb94fb57
+15f71c0a13f700f71d0a0ef83bfb40b8f71e7693acf8dbac12f1bcf829bcf782e013
+bef8c0f89415620a13de630af80896158bde9c90c78e91918ba08591658affffd4b3
+348affffd94ccc8bffffdbb3348bffffcb4ccc8c598c85858b769185db889c868b38
+08fc4e07fb48576f6a1effffece6688bfffff1ccccff000bcccd84ff000eb33385ff
+000cb333fffff73334ff000ccccdffffe719988b087d6d767567c079a11fb88baa93
+b4aeff002bb334ff00254ccdff003a4cccff0033b3338bf723080ef80bfb73b7f752
+7693acf7f6a7a877f711ef6aac12f1bcf829bcf74fef35da13bb80f8c0f89415620a
+13db80630a139dc0f780e215850a1399a099fbae15870a0ef76ffb73b7f745acf7f6
+a771bff700ef12ebdaf760daf746ef35da13ee00f74cf7fa15fffff9e66684fffffa
+6667fffffd999affffffb333ff000966668aa6fffffdb333ff0026b334fffffb4ccd
+ff000a4cccfffffde666ff0004999afffffe199aff00036666838b6f807182468289
+858d7b8d85c18696868b5108fb57078b3981874f8685858b769185a98cb38cb38bb3
+8ba98aa98a91918ba085915890818f8bdd08f738078ba0949793940813de00b1b0b8
+a1b28b9f8ba07e977495778d708b6d08fb2c078b398187578686858b769085a98cab
+8cb38bb38baf8aa98a90918ba086915390808f8bdd08f729078bc287bb74aa7aa16c
+97688b085a8bffffc84ccd7effffc4b333470813cf00f858f78515850a13ee8099fb
+ae15870a0eef89acf766b5f80b77db7601f7e4f94d15f7020a42fc32154a0afbb1fb
+60154b0a0efb1e81bb5bb4f80bacf7637712afde4bd8f735d91332f751f88b15f703
+0af3fba215d40a137ad50adafb381513b6760a137a770a0efbbe89acf8dbacd27601
+f5e003f70ef94d15f7020ad0fcd315590a0efbd889acf7f6a7a87701f1da03f4f888
+15f7030ad7fc0e15e60a0ef681aff8e8afc77601b0ebf849eb03f7daf94d15f7020a
+904015640af7e3fbb915650a0e3081aef80faef7627701b4e1f78ee103f76af88a15
+f7030afb41fbbd158a0af759f75b158b0a0ecd81b4f8dbacd27601e2e0f7f6bc03f7
+daf94d15f7020afb2efb42156b0a0e4b81ba84a6f7e9acf76a7712e3daf758da133c
+f778f88a15f7030a13bc80fc9415f10a137cf20a13bcf30a0ed381b4f8dbac98e9b9
+bd01e4e0c5e9bde9c6bc03f7d78115d20a30f96115d30af72416d30ae0e815f40a0e
+4b81ba84a6f7e9aceceab5bd12e3da5fe9d6e974da133900f7fef92d15f40a133a00
+7c3115d80a133900f73d16d80a13ba8040fcdd15f10a137c80f20a13bc00f30a0ed3
+81b4f8dbac98e901e4e0c5e9bde9c6bc03f7d78115d20a30f96115d30af72416d30a
+ff003a199aff008ee66815f7520a0e4b81ba84a6f7e9aceceaff000133347612e3da
+5fe9d6e974da132800ff01396666ff02eb333415ffffc3999affff94e66405fffff9
+8000fffff48000fffffd4ccdfffffc66688bfffff5e6688bfffff9b330ff00059999
+fffffa999cff0005999a8bff0005999a8bff00066666ff0003999897ff000d800008
+e7ff0062199cfffffd999aff0009e66405ffffed999aff0013ccccffffeb8000ff00
+00e668fffffae6668b08878bfffffb3332ffffff1998fffffd999affffff199c0813
+3200ffff41999affff53cccc15d80a133100f73d16d80a13a28040fcdd15f10a1364
+80f20a13a400f30a0ed381b4f8dbac98e901e4e0c5e9bde9c6bc03f7d78115d20a30
+f96115d30af72416d30affffd73334ff0029199815ff0021199806ff0017199aff00
+1de668ff0018999aff001c3334ff001d4cccff0019800008fffff46668ff00119998
+05ffffe2b332fffff1e668ffffe76666ffffef4cccffffe38000ffffe91998ffffe6
+999aa1ffffe5ccceff0010b3346d9a08fffff3b332ffffee666805ff001bb334ffff
+e76664a6ffffe5999cff0017199affffdf6664080e4b81ba84a6f7e9aceceaff002a
+33347612e3da5fe9d6e974da133800ff00e73333ff0284333415ff0028000106ff00
+173332ff00296664ff001e6666ff00288000a7ff0023199c08fffff0ccceff000bb3
+3405ffffe26666ffffe7b330ffffe4ccccffffe98000ffffe26667ffffddccd0ffff
+e4cccdff00206664ffffe5999aff00168000ffffe0ccccff001a199c087bfffff44c
+cc05a7ffffddccccff001d999affffd78000ff00173333ffffd5b33408133a00ffff
+93cccdffffbacccc15d80a133900f73d16d80a13ba8040fcdd15f10a137c80f20a13
+bc00f30a0ed381b4f8dbac98e901e4e0c5e9bde9c6bc03f7d78115d20a30f96115d3
+0af72416d30affff90e666ff008e199815f7530a0e4b81ba84a6f7e9acecea12e3da
+5fe9d6e974da1330ff00cd3333ff02f8333415fffffcccccff0000e664fffffb3333
+ff0000e668878bffffe4cccd8bffffed999afffff0b334fffff99999fffffa999808
+fffffe6667fffff6199cff005b3333ffff9de66405ff000ccccefffff28000ff0005
+9999fffffb8000ff0004cccd8bff000666668bff0005999aff000566688bff000480
+008bff00064cccffffff3334ff00064ccc8794081334ffff75ccccffffb8333415d8
+0a1332f73d16d80a13b540fcdd15f10a1379f20a13b8f30a0efb2883acf70eadf765
+bc01a1e1f758e203f7c4f72715f7540a3af75415f7550a0eef89acf766b5f80b779f
+ebb9bd12f755ebf721eb13def755f95615b60af78116b70afb3bfc3b154a0afbb1fb
+6015b80a13eeb90af7d1f96515f40a0efb1e81bb5bb4f80bace4eab6bd12afde4bd8
+5ae9d6e956d9133800f7d5f92e15f40a1339007d3015d80a133880f73d16d80a137c
+40b4fbea15750adafb381513ba40760a137c40770a0eef89acf766b5f80b77cbf346
+b712f7c6f313ecf84df9a115835fde8b0597969c97928793811ffb8f5f1594b7378b
+057f817980848e83941fd5fc5a154a0afbb1fb60154b0af72bf9371513f4f7000a0e
+fb1e81bb5bb4f80bacf700ef9dbd12afde4bd8adefa6d9133980f7d6f92d15f40af7
+57fc4415d40a137d80d50adafb381513bb80760a137d80770afb11f8bb15f7010a0e
+f7a289ac6cb2f777b29db1f788b36cacedbd12f841dff74aacb2ac9bae1333e0f92d
+f97d15f40afb3efc4c15bb0afb4b0413b3e0bc0a1373e0bd0a13b3e0f7560a137be0
+bf0a13b7e0c00a1373e0c10a13b3e0c20a0ee781bc5ab5f74baef730acdabd12b2d3
+4ed4f743d4f75dd7133980f85cf89a15f40aacfb1a15f7570a137d80f7580a13bb80
+f7590aacfb3d15dd0a137d80de0ad5b115df0a0ee581aff713b3d3aff7d5af12b0eb
+f821e063ac13fcf80df92615fb3bfb41fb17fb70ffff4c3333f710ffff76cccdf753
+1ff70a8be8a4cfc5809486938b9608bfc407ff000c4ccc8dff000ab334ff000fcccd
+8bff000999998bff0004cccdfffffc4cccff00068000fffff6b334ff00014ccd0848
+a3068bff002333339cff0009cccda88e91918ba38591738a728a638bffffde80008b
+ffffd180008c5f8c85858b739185ff0036e666fffffbccccff001b199afffffc4cce
+8bffffd7e666087323077ffffffdb33382fffff14ccd8bfffff666668bfffffa6667
+8efffffa3333948908f7053206696b4885558b08fb3237f73df718f743ff00718000
+f70cff007480001f13faf7258bb438a535ff000b4cccffffff4cccff000a66688dff
+000b4cccff0004b334fffffd8000b5fffffb8000b37bd3084f9566aefb038b080e2c
+fb82b0d5b3d3c455c8e2aaf785aa75b812c7dd41c0f75adbff0011e666ff0037199a
+13cd60f7d3f7ab15820af711f70015f7110a13cb60f7120a13dd60f7130a13d8e06f
+737b608b698b679f6fa57effffd94ccdffffe9199affffe6b333ffffe1e666fffff4
+b3336c08ffffe94ccd067ffffffdb33382fffff14ccd8bfffff666668bfffffa6667
+8efffffa3333948908a406ff0001e666ffffab6666dcffffe5999aff004c199a8bff
+006ab3348bff00719998ff0028999aff002ae668ff0046666608ff0026cccc06ff00
+0c4ccc8dff000ab334ff000fcccd8bff000999998bff0004cccdfffffc4cccff0006
+8000fffff6b334ff00014ccd08ffffdee66606ff00016666ff0007199aff0000b334
+ff000766668bff000780008bab7ca46ea364ab458c668b798b728973880813eae0f7
+150affffe4e666fc6e15fffec4666806ff00013334a5ff00058000ff0016199aa3ff
+001ce66696889b89988b0813d860aa8ba78e998bbd8bb58aa87bb0ffffeb3334ff00
+0cb334fffff24cccff00013332ffffe8800008fffff633346315ffffe3b332ffffcf
+6666ffffabccceffffe6999affffb666668bffffe066668bffffbb4ccdff00166666
+ffffefcccdff0033999a080ee581aff783aff7d5afc77612b0ebf821e063ac13f8f7
+eaf94d15f7020aae6415f70b0a13fcf70c0a13faf70d0a0e2cfb82b0f74ec455c8e2
+aaf785aa75b8f7517712abd062dd41c0f75adb9dc2139230f757f89015f7030af710
+fb79152e5c78661e139ab0f70e0afb4ffbb51513d330f70f0a13b330f7100af7ccf8
+2115f7110a1396b0f7120a13bab0f7130a13b270830a13b330f7140a13d670f7150a
+0eb589acff0115e666ff00266666ff010ab334acd27601f5e003f7d9f94d15f7020a
+fb1afcd3155b0a0e3889acf803acf766a98576c17712e1da13dcf7b2f91815f7030a
+fb5cfc9e158b388087538785858b769185ac8cad8cb38bae8bac8aa28a91918ba085
+91628f808f8bde08ff0056e66607ff00133333ffffff8000ff000e199afffffe8000
+ff0009b333fffffc999a96fffff88000ff0009199a82ff000be6667b08d42905ff00
+1d6666ffffd88000ff000b4cceffffed3333ff00014cccfffff44ccdff00004ccc88
+ff0000b334898e8b9f8ca18c9f8baa8baa8a9f8a91918ba08591698fffffe6b334ff
+00046666ffffe54cccff0021999a08fb18f73a05fffffc6666ff00048000fffffc99
+9aff000480008b908b8f8b8d8f8f08e3e605a9abae93b38f91918ba08591748a6f8a
+678b658b668c748c85858b769185c387ffffe84cccffffdcb334fffff6b334fffff4
+4ccc08746effffe0b33469ffffe64ccc78ffffe9cccdffffef999affffe51999ffff
+f43333ffffed199afffffd666608ff015ccccc07cc8fb38b1e92878e821e13ec7281
+407d638889838d7b9185bf8897908b37080ef6fb5cb1f72caff8e8af01b0ebf75dc9
+f742eb03f8a8fb1b15f75a0afb5df98915640a0e30fb5cb1f72caef80fae01b4e1c4
+c9f717e103f812fb1b15f75b0afb24f8af158b0a0ef6fb5cb1f72caff8e8afc2bd01
+b0ebf75dc9f742eb03f85cf95d15f40af7c0fde415f75a0afb5df98915640a0e30fb
+5cb1f72caef80faedabd01b4e1c4c9f717e103f7fbf89a15f40af78bfd2115f75b0a
+fb24f8af158b0a0e98fb67b0f99fb3d47601cba5f815e403f7a7f94d15f7020afb00
+5715f74b0a0efb47fb7faef7c3adf796ad12b3a573d7f756dc13e4f740f88815f703
+0a5efc1d159c7c059d8fa992968b08d9aa6326fb004655591f13ec638b70b183a183
+a37e95748b08758179796bc54ee0f70fe0e9f70bf53ac02b1ff72bf78e059ba69196
+8b8f8b8f858d848b898b67856e8b08fb5f067c8b8292899108720613f4f75c0a0efb
+d7fb73b7f8c8a7a877f77a7701f705da03f705f7d115f71a0a92f75415f7030a0ef9
+4a89adf8ceb66bad917712f5e0f807ebe3a913ae1c04d48915f7380a13cef7390a13
+9e710a13cef74d0afea9e115f8740713aeaeae99bcf76cd2fb43fb2efb5efb0d59fb
+2129809fab1e13ce60f8c51513ae520a0ef89489adf7fcb09577f756ad12f5e0f807
+ebd6ac13bef986f84b15f74e0a13def74f0afcc7fbf715510a60f8c515520a0ef7be
+81ba66ad87a6f7e3b072aef75ea9a67712b2e1f770daf6ac130fc0f8bcf84b15f74e
+0a1357c0f7510afb63fbcf15f7050a138fc0f7060a80fffef84ccc157c0a132fc07d
+0a1387c07e0a0ee581aff783aff7d5afc87612b0ebf821e063ac13f8f841f9c815b1
+0a57fb3615f70b0a13fcf70c0a13faf70d0a0e2cfb82b0f74ec455c8e2aaf785aa75
+b812abd062dd41c0f75adb9dc2139060f7aff93315d60aaffc1c152e5c78661e1399
+60f70e0afb4ffbb51513d260f70f0a13b260f7100af7ccf82115f7110a139560f712
+0a13b960f7130a13b0e0830a13b260f7140a13d4e0f7150a0ef7c581ba64a8f7bab5
+90d5f744a812f5dcf7dadcf772b013bff895f7181530ca58f3dbe8d7f74bf70c6dd4
+46707d78791e8b6caa86968aa886ab6d8b2b08294e25405c64a6cc1ef851078ba7ff
+000eb334ff000ae668ff00284cccff0003199808a58d0590ff000066688eff000299
+988b90088b9e898d058b2e896764348d8b1e89898b78058b868ffffffd666890ffff
+ff999808a58905ff00274ccc88ff000eb334828b6d08fb67fbdaf767078ba7ff000e
+cccdff000ae668ff00283333ff0003199808a58d0590ff000066688eff000299988b
+90088b9e898d058b2e896764348d8b1e89898b78058b868ffffffd4ccc8fffffffb3
+3408a68905ff0025cccdfffffd3334ff00103333fffff6cccc8b6d08fc8a078b6fff
+fff2cccd7fffffd733338808137f70890587ffffffb33388fffffd4ccd8b86088b78
+8d89058be88daeb3e1898b1e8d8d8b9e058b9087ff0002b33387ff00004ccd08718d
+05ffffd84ccdff0003199afffff0b333ff0008e6668baa08f78df7da070e54fb6176
+f9d7bc01dadcf792e503f7d6f8f515d0a248fb111f8bfb18fb16fb07fb102308f84a
+07d5d5b6aab88b08fb364d15cc8eaf8b1e92878e821effffe6e66681ffffb4999a7e
+ffffd7800088088d73058b88ff0002cccdfffffe3334ff00033333ffffffcccc08ab
+89059f957e4a1ffd1d078b6a81796d8208778505868a8a888c86089272f71fb08bf7
+6605f744f71bf73cf7218bf7348bf70165e7fb0d8b4b8b4b535254080ef3967693ac
+f8dbacd27612f1bcf829bc133cf7b9f9c515cd0af722fb7115ca0a137ccb0a13bccc
+0a0e5689acf7f6a771bf12ebdaf760da1398f7a3f93315740afb31fb4f15e70a13d8
+e80a13b8e90a0eef89acf766b5f878ab01f7a3b3ebb303f79bf7af154a0afbb1fb60
+15c2f725059098918fa38b08f7678bc5fb3d05ff000bccccffffdd8000ffffd9ccce
+fffffce666ffffd06666fffffc999a85858b769185b08cc28cb28bb48bb18aae8a91
+918ba08591ffffd93334ff00038000ffffde3334ff00034cccffffee9998ff003033
+3408ffff396666ff0227800005ff001d199aff000dccccff0014b334ff001ce668ff
+0000ccccff001fccccff00068000ff0001e668ff0007ccccff0002e664ff0009b334
+ff0004333408f724c505fffff34cccff00154cccffffeb4cccff00116668ffffe366
+68ff000d4ccc08ffff8cccccffffb0199805fffff1199aff001c6668ffffe1199aff
+001380006a8b5d8b61648b5d8bffffdb3334ff001accccffffdfccccff00224cceff
+fff4800008ffff1ee666fffdec800005714dffffe1800085ffffd480008885858b76
+9185a58cff0020b3338cff001e4ccd8bb48bbd8ab08a91918ba08591ffffda6666ff
+0002999a5cff00044cccff000f999aff0029199a08f760f94415ba0a0efb1e81bb5b
+b4f80bacc5abf5ab12afde4bd881b3ebb386d9133980f766f90f15d90a335615da0a
+137c40f73ffbf115750adafb381513ba40760a137d40770affffc36666ff030e3334
+15ffffc3999affff94e66405fffff98000fffff48000fffffd4ccdfffffc66688bff
+fff5e6688bfffff9b330ff00059999fffffa999cff0005999a8bff0005999a8bff00
+066666ff0003999897ff000d800008e7ff0062199cfffffd999aff0009e66405ffff
+ed999aff0013ccccffffeb7fffff0000e668fffffae6678b878bfffffb3333ffffff
+1998fffffd9999ffffff199c080ef7a289ac6cb2f777b29db1f788b36cacd47612f8
+41dff74aacb2ac9bae1333e0f8fef9c915f75d0afbeffc9815bb0afb4b0413b3e0bc
+0a1373e0bd0a13b3e0f7560a137be0bf0a13b7e0c00a1373e0c10a13b3e0c20a0ee7
+81bc5ab5f74baef730ac12b2d34ed4f743d4f75dd71333f82bf93315f75e0afb22fb
+b315f7570a137bf7580a13b7f7590aacfb3d15dd0a137bde0ad5b115df0a0ef681af
+f8e8afc87601b0ebf849eb03f81cf9c815b10afbb0fdd515cf0af773f90f15d00af7
+57ffff894ccc15d10a0e3081aef80fae01b4e1f78ee103f7b5f93315a30af711fb6d
+15ee0afb445915ef0aff0073cccc3715f00a0eef89acf766b5f80b7701f756f9a315
+f75f0af7179015f7600a4dfc8d154a0afbb1fb60154b0a0efb1e81bb5bb4f80bacf7
+627712afde4bd8f735d91336e1f91915f7610af71c9115f7620ad2fc3615d40a137a
+d50adafb381513b6760a137a770a0eef89acf766b5f80b77d576c8bf01f775a7f76c
+a703f775f94715f7630ab1fc2c154a0afbb1fb60154b0a0efb1e81bb5bb4f80bacf7
+29c412afde4bd85aa6f74bd95ea6133280f7daf88615f7640a1379006afb9d15750a
+dafb381513b500760a137900770a0e6589ac6cb2f7b0b1f788b36cac12f4e0f74aac
+b2ac9bae132780f727f9a715f7650af7179015f7600a8efc431530f74806133780c4
+0a13af80540a136780550a13a780c50a137780c60a0efb2881bcf765adf70eacf76b
+7701b0dff75be103e8f92015f7610af71c9115f7620a22fc0c157f0adcfb5415800a
+0e6589ac6cb2f7b0b1f788b36caccc76c8bf12f4e060a7f759ac7da7a4ac9bae1326
+b8f727f94715f7660af71afbde1513371830f74806b7979fc11ed606d68b9b63a146
+ff000c6666fffffe3334ff000accceff00021998ff0009ccccff0004b33486b47ceb
+89938b8d8a8c888b7a88838a738b08133698fb930613af58540a136758550a13a758
+c50a137758c60a0efb2881bcf765adf70eacf72cc412b0df6da6f75ee143a613f5f7
+e2f88715f7640afb66fb6d15e20a13f2e30adcfb5415e40a13fae50a0efbbe89acf8
+dbacc87601f5e003f9ae048b828e848f8708ee37058d898e8a8e8b908b93908b938b
+8efffffecccdff00036668fffffd8000ff0004999808ffffc4b333f701058693848f
+808b6e8b7fffffea33348bffffefcccc08f7179015f7670ac7fd3915590a0efbd889
+acf7f6a7a87701f1da0378f93b15f7610af71c9115ffffe08000fffff58000ffffe9
+ccccfffff233341f8b868c85908608f1fb0d058d898d8a8e8bff000b33338bff0002
+cccdff000a66688bff000299988b8c8b8dfffffeb3338e08ffffc14ccdf723058794
+8390808b08cbfcc715e60a0efbbe89acf8dbaccb76c8bf0197a7cde0cca70397f946
+15f7630af747fccc15590a0efbd889acf7f6a7a877f73ac401ff00064ccdff00184c
+cdff00476666dab7ff00184ccd03f775f88615ff00184ccd9705fffff36667e0ffff
+d2199abd4c8bffffcae6668bffffc666675afffff533333508ff00184ccd7f0594c5
+ff00296666abff002ecccd8bff003099998bff0026b33466ff0009e66656085ffc0c
+15e60a0ef681aff8e8af01b0ebf849eb03f74af9a715f75f0af7179015f7600a9dfb
+3e15640af7e3fbb915650a0e3081aef80faef7697701b4e1f78ee103f708f92015f7
+610af71c9115f7620afb67fc59158a0af759f75b158b0a0ef681aff8e8afc176c8bf
+01b0ebdaa7f76ca7e1eb03f768f94715f7630af70b4615640af7e3fbb915650a0e30
+81aef80faef729c412b4e175a6f76ca68de113eef7f0f88615f7640a13f6fbc7fbb9
+15ed0af759f75b158b0a0e8381aa74acf798adf7b9adc67612f3e0f76ce7133eeff9
+ac15f7680af7179015f7670ab4fb4715670a38fc8415680a13be690a137e6a0a0efb
+7389acf7eec955a7f7847712efda1398d2f92115f7610af71c9115f7620a6cfbc115
+f7230a13b8f7240a13d8f7250a0e8381aa74acf798adf7b9adc776c8bf12f3e062a7
+f76ca77ce7133d80f728f94715f7660af7104215133e40670a38fc8415680a13be40
+690a137e406a0a0efb7389acf7eec955a7f743c412cda692daf716a6139ef7c9f886
+15f7640afb19fb2015f7230a13bef7240a13def7250a0ecd81b4f8dbac01e2e0f7f6
+bc03f750f99d15f75f0af7179015f7600afb27fb97156b0a0e4b81ba84a6f7e9acf7
+717712e3daf758da133cf705f92015f7610af71c9115f7620a13bc6bfd3015f10a13
+7cf20a13bcf30a0ecd81b4f8dbaccc76c8bf01e2e0b4a7f76ca7b4bc03f769f94715
+f7630a62fb3c156b0a0e4b81ba84a6f7e9acf731c412e3da58a6f76ca674da1336f7
+fbf88615f7640a13b9fb22fc9015f10a1379f20a13b9f30a0efb02fb76a3daddaaaf
+f8eaad12a6ff00208000fffff78000ff00476666ff0085999ab2ccdf4bff00208000
+13f700ff018ab334f90b15f7690a13fb00f7280a13f680f76a0affff5e4cccfd3415
+f7160a0efb61fb76a3daddaaac8976f82aac12bbaa7ad2d7b2a5d755ab13c900f74e
+6215f7160a13dd80fb1ef74715f72a0a13eb80f72b0a13eb40f72c0a13ed80f72d0a
+0e8dfb76a3daddb2acf86ef7285cb2128eadf778e06bb2f75cad13e580f7bb6215f7
+160a13ee80c2f73715f76b0a13f680f72e0a13ee80f72f0a13f680f7300a13ee80f7
+6c0a0efbabfb76a3daddaac2f7edb201e4daa5b203f73f6215f7160afb14f86a158e
+0a0efb08f803a9f777ad12d6a386dbf717cf74e413d4f718fb25159da39ca21f8b91
+869a8b988baea3a4c09af706acdada8be68bf70654cefb009e0813e8a898cfb68bd5
+8be631a95c8b458b547f6f8b0883fb14a3890594cdbab5c18b08b3c3773e52404245
+1f906d0513d4ebe464fb0c1f8b445e444571256564478b6608709e7c9e1e0efb68fb
+6476f82aa4f762ad12ada08dcff705ca6fd513fae4fb79159f9b9ca21f8b9289948b
+988baea89fbf9dbc9ce9b98bf68bcf60c3409c0813fc9d96c1b48bc78bd03ab05c8b
+458b697f708b0883fb09a0890594cda5aacb8bb28bb8738b518b5d5c4a3d7e087207
+978d958d958b0813fabbdb80261f8b4c6a655c783c6b52408b67086fa184951e0ef7
+1b89acf7b6b5f78facd27601f5e0f7eae003f8fef70e15580afbbcf8d315f7020a0e
+5289acf7f8bff75ea98576c17712e3daf766da13def7a5f91815f7030a21fffe99e6
+6615f76d0a13eef76e0a0e93fb7ea8f75fa8f8d2c454a812eadcf7a4db13ecf8a4f8
+4215ea89f719fb1e1effffcccccc8bffffbce668ffffde8000ffffa24cccffffa880
+00089107cc8eb38b1e92878e821e13dcffffe6e66681ffffb4999a7effffd7800088
+088d73058b88ff0002cccdfffffe3334ff00033333ffffffcccc0813ecab89059f95
+7e4a1ffc57078b6efffff63333fffff4cccdffffdecccdfffffd33330873890586ff
+ffff999a89fffffd66668b86088b788c89058bd78daeb2d7898b1e8d8d8b9e058b90
+87ff0002b33387ff00004ccd08738d05ffffdeb333ff0002cccdfffff74ccdff000b
+33338ba808ff01a4333407ff0057999aff00523334ff00344cccff001a9998ff002e
+199a8b08cba157fb341ffcb7078b6efffff56666fffff5199affffdf999afffffbe6
+660873880586ffffff666689fffffd999a8b86088b788c89058bd18dafb2dc898b1e
+8d8d8b9e058b9087ff0002800087ff0000800008738e05ffffe16668ff0003cccdff
+fff39998ff000b33338ba8080eb472b86db5f4a5f785aef7977712add9f778d6f746
+a3137ff782f82815ba8bac78a16308fba00773706c79678b085a33b8f72c1fd9a4ec
+f01e13bff793fc14157f8b808c808da8c3abc5b08b08a2987e761f594b6a671e3df8
+c715cc8eb38b1e92878e821effffe6e66681ffffba999a7effffd7800088088d7305
+8b88ff0002ccccfffffe3334ff00033334ffffffcccc08ab89059f957e4a1ffb2b07
+67a35f8e778b0839fb1054fb411f137f23ccfb09f7101eba8bb19fabac9662a680aa
+82776b7a6b786908a482c6f10513bf928a968a8f8b08ded6b9e3ab79a15e1f568b57
+217c7008788bbfb21f0e627fadf8f6a593a412bad154dcf797d557dd13f2f709f72a
+158bd3d9c2c0aee065e6618b32085a7743fb191e5ffb02a3f31f13ecf7b1f812158b
+416970435940ae3db88bc508c0b8c7c71ea5072438482f1f8b39d55dd6640813f264
+80fb114f8b2008fb15f70b66eff743ccecdf1e8bf702fb00be47a90813ec978ff71a
+c38bf70808c065f1fb381e7207cec8513f1f0efb137fa5f9127712b4cb5dcef766c7
+67cf13e4f77d99153e58c7db1f8bb2a1b6b9b808b3b105df4cca5b8b48084b714c26
+1e13d8f2f898158b3c3f5184878b8bfb13dd8bce8b9a8db1b4ac0876a405697c5465
+8b3c8b32d35cbf600813e44a6e3e388b3a085ba6fb01f737f70fd5d1f7091e8be738
+c54cb60813d89b91edc48bee8bd55bad6899087b7005b1668c5d8b7f080ea28bb8f8
+c4b201b9a9f86ec503f753f8f115f7968bfc24fccc05858388848b8508848e829c1e
+f80c06d5b3773b1f8b7b81737974089f8205aea8aaa88bc908b170c62a1efbdd8bf8
+16f8b605989e949a8b960891888e761efc19065b8b8e95668e87558143836208a986
+05a1d09cbdd78b080efb1f8bb2f7f3b201b3a6f7d3c403f72af81a15f7148bfb80fb
+fa05858289858b8508809b8b9d1ef75f06b2d7763b1f8b7b806f807908a08105aaa3
+a6ad8bc008bd55be461efb588bf77af7ef05949993978b910893858e801efb8c067c
+8b829289910872068a5e855f835a08a588059fd4ad9ba98b080eef89acf766b5f80b
+77cbf301f7c6f303f7c6f98615f7000a60fc6b154a0afbb1fb60154b0a0efb1e81bb
+5bb4f80bacf700ef12afde4bd8adefa6d91333f73af8eb15850af713fc0215d40a13
+7bd50adafb381513b7760a137b770a0e65fb5ca8d6abc9ac6cb2f7b0b1f788b36cac
+12f4e0eec9a0acb2ac9bae13d9f0f7942b15a2957d7671767d6d1f778b808f709584
+8488848b7fa4809c85ab8b08c8b9aab6b16ca3631f828b828a838908a4cedf8b0513
+e9f0c50a13ddf0f70a0a13ebf0540a13d9f0f76f0a0efb28fb5ca8d6abff00364ccd
+ff0030b333f765adf70eac12b0dff721c987e113fef7792b15f7700a13fdf7710a22
+f80e157f0a0ef681aff8e8af8bebb9bd12b0eb67ebf7cdeb6beb13b4ecf95615b60a
+13b2f82d16b60a13d9fb433715ce0af7e3fbb915650affff1e4cccf86b15f7720a0e
+3081aef80faee4eab5bd12b4e185e9d6e984e113f8f7f3f92d15f40a13f4853115d8
+0a13f2f73d16d80a13f9fb8dfc0615ed0af759f75b158b0a0ef681aff8e8afff001c
+ccccff003a4cccfffff2e668b7ffffdee668ff003c800012b0ebff005e3333a2ff00
+be6667ff0016e666ff006a8000eb13d780f898f99c15825fc78b0598959d96928893
+811ffc1b5f1593b74e8b057f817980848f83941f13e780ff0114b334ff000d199815
+f7730a13cf80f7740a13e780f7750affffba4cccffff84e66815640af7e3fbb91565
+0a0e3081aef80faedcc089c2b2bd12b4e1f774a68ae113ccf7ecf92d15f40a13eef7
+4c2f15b30a13deb40a13eeb50afb9bfc0415eb0a13cdec0af759f75b158b0a0ef681
+aff8e8afb4f301b0ebf732f3f743eb03f7b7f98315f7000ab3fb1515640af7e3fbb9
+15650a0e3081aef80faef6ef01b4e1c8efe4e103f750f8ea15f7010afb27fc1d158a
+0af759f75b158b0a0ef681aff8e8afb4f340b612b0ebf732f3f743eb13def848f997
+158260dc8b0598959c96928793821ffbaa601594b6378b057f817980848e84941ff7
+1ca21513eef7000ab3fb1515640af7e3fbb915650a0e3081aef80faeceefb5bd01b4
+e1d1efdbe103f759f8c215f7010afb30fbf5158a0af759f75b158b0af70bf78815f4
+0a0e7789acf8dbacc4bd01f790e003f831f95415f40af728fcda156f0a0e3bfb7cdb
+f8baace2bd01f813f89a15f40ab8fd3a15910a0efb9772b7f70aa6f871a9a67701ea
+daf713a403f7c1ed156363646b1e7d8b838e8292ff002a8000deff000f8000a49c8b
+089a98846b1ffb62a3158b33ff002480006ea27d085dffffab8000ff001a8000ffff
+f180000596ff001c8000ff000c8000ff001c8000ff000f8000ac978698899b8b08bb
+cac2d3b5759f731fffffd380008bffffe180004affffe88000568594fffffe800097
+8be608f83d07cc8fb38b1e92878e821e7281407d638889838d7b9185c58791888b40
+080ec67fb769acf70ba6f764a771bf12ebdaf756daf739aa13aff805f7a615fb3807
+8b4baf6da87c085b369e82bae3059a869b899f8b08c5dec0d4a57cb05e1f598b6549
+6b537b9c8bab8bce08ef078bc287bb74aa7aa16c97688b5a8bffffd24ccd7effffc4
+b33347fffff9e66684fffffa6667fffffd999affffffb333ff000966668aa6fffffd
+b333ff0026b334fffffb4ccdff000a4cccfffffde666ff0004999afffffe199aff00
+036666838b081377e80a13afb1b0aea1b28b9f8ba07e97740895778d708b6d08f6fb
+7b15badca1a5a78b08a29c7d765f5464641f788b7e8f8092080efb717fb7f70aa6f7
+69b201e2daf743a703f79bf7171597979892988b08a29c7d76605563631f788b7e8f
+8092a4b6a0ab989808fb4480158b4cb061ae7d085b369e82bae3059a869b899f8b08
+c5dec0d4a47cb15f1f768b767e7b7b7778776b74617b9c84ab8bce08f76ff3079599
+8f941f9f078f888d861efb0cb206cc8fb38b1e92878e821e51ffffe5b3340585ffff
+fc4cccfffff7666689ff0000999a84ff0002199affffe93334ffffffe666fffff6cc
+cc8bffffad199a085dffffffe666057d877f831f7e07868c8a8f1ec6060efbd7fb73
+b7f9017701f705da03f705f7d115f71a0a0ef72e81b561a7f80db768aef7977712ad
+d9f778d6f771d8139ff7e8f7ed15fba40773706c7d678b085a33b8f72cd9a4ecf01f
+ba8bac78a16308d6fbb515f7bb07136fbab1bc91958b08c8c14625fb06592f2c1f6c
+8b729877a40840f88f15fb2b07139f67a35f8e778b0839fb1054fb4123ccfb09f710
+1fba8bb19babac08589d079696969c949608136fa872af7fb68b08eef709def738f7
+0e36db351f5a8b5f76696608f75e07cc8eb38b1e92878e821effffe6e66681ffffba
+999a7effffd7800088088d73058b88ff0002ccccfffffe3334ff00033334ffffffcc
+cc08ab89059f957e4a1f0ef72dfb7ea8f757b75fadf805b968ae12afd7f776d666b0
+f770d913b680f89df81d15ceb842fb02357027211f7a8b678d69b408f78807a1c0be
+a8ae8b08fb00fcbe15f74107a47daa83af8b08e8f705d8f73ef647ea2b1f6c8b5181
+5e450813cd80c30797899a801e818bfffff6b334fffff4ccccfffffb4cccfffff633
+34087f72056aa960985a8b08fb0e3a28fb182fc1fb12f7241f13b680c48bab9f9a98
+08fb4c078b6ffffff4999afffff54ccdffffe06666fffffcb3330878890586ffffff
+800088fffffd80008b86088b788d89058bcf8daeb2d0898b1e8d8d8b9e058b9087ff
+0002800086ff0000800008788d05ffffe0e666ff00034ccdfffff5199aff000ab333
+8ba70813ce80fb46f8c915b58bad72a65d08fba90771776889788b085133b5f72d1f
+f3b6d2db1e0eee89acf766b5f80b77c77701ff01968000ff017c199a15ff00218000
+ffff9ee666ffff9ecccc8b05ff002e199af72815ffff9ee666fb28ffffe333348b05
+758b848eff0003cccdff000a4ccc08ff00663333ff0102b334918b05ffffe13334fb
+ce15ff008ccccc8bc5fb3d05ff000bccccffffdd8000ffffd9cccefffffce666ffff
+d06666fffffc999a85858b769185b08cc28cb28bb48bb18aae8a91918ba08591ffff
+d93334ff00038000ffffde3334ff00034cccffffee9998ff0030333408ffff78cccc
+ff01776666ff009b3334ff00ec999a588bffff85b334ffff45999affffcb4cccff00
+926666057c8270807e8b08fb77fcac05714dffffe1800085ffffd480008885858b76
+9185a58cff0020b3338cff001e4ccd8b08ff000a199a8bffffb7e666fb02be8bff00
+47cccdff006d800005ff0017e667ffffff999aff00178000ffffff6666ff0013cccd
+ffffff800091918ba08591fffff1cccd8cfffff04ccdff000133337eff0003666708
+ff0053199aff00cc666615ffff906666ffff55cccd05ff00008000ff0002999aff00
+00ccccff0002b334ff0001199aff0002e66608c2f725059098918fa38b080ebe81b4
+f8e2b0b37701b0e6f84aac03f76bff0060999a15ff011a199aff01d9e66605ff0023
+199affffe09998ff00149998ffffd58002ff000d3334ffffd466669787ff0009b334
+8eff000b4ccc9186bf84bb81c2fffff08000ff000180007cff0004ccccffffef3334
+ff0005e66808ff002b4cccff0048cccc588bffffdd4cccffffc5999805ffffe0199a
+ff0009b334ffffd7b334ff0008b334ffffc6e6668b368b446c5055ffffbd999affff
+c33334ffffd86666ffff9e19988bffff97b3348bffff9bcccdff0022e666ffffa4e6
+66ff0046cccdffffc4e66708ffff9b4ccdffff566666bd8bff0056199aff0090999a
+05ff002f8000ffffe3ccccff003b8000ffffef999aff0047e6668bec8be4b9cfe486
+948491808b443d476c2e8bffffc8e6668bffffcfcccdff00198000ffffda4ccdff00
+28199a08ffffe34ccdff00244ccc15ffffdb199aff00374ccdffffea999aff004700
+018bff0045cccc8bff00564cccff0016e666ff0047ccceff00248000ff002ce666ff
+0031999ac8c5a7bf8bba8bff00254cccfffff68000ff001de668fffff01998080efb
+3b81bcf803ac01b0e103f818f85a15ffffddccccffffd6999a05ffffe5ccceff0010
+999a65ff0009ccccffffd066668b288b21328bfb228bffffca999aff000c6666ffff
+d14cccff00176667ffffdbcccd08ffffc33333ffffb64ccd058d7c97809b8b08ff00
+384ccdff0044999a05ff00214cceffffdfccccff002e1999ffffed999aff00394ccd
+8bc78bc09ebddd8794838f828c695f6075608bffffd6199a8b65ff00186666ffffe7
+4cccb608ff00a68000ff00cab33405ff0006999afffff98000ff00094cccfffffd66
+66ff000b33348ba08ba7988baa8bff000f6666fffffb999aff000e199afffff78000
+ff000c800008ff0024e666b805879881957a8b08ffff02cccdfbc715fffff86667ff
+00184ccdfffffbcccdff001bcccd8bff001ee6668bf702bbcdcd8bff0030e6668bff
+000de66673ff0005999affffe3cccc080e4889ac6cb2f7cfb7f76cac12f5e0f7afac
+137cf729165c0a13bc5d0a137c77436650218b084c0664799ebe1ff789f72a079895
+9d97918793821ffb34f711068bde9c90d18e91918ba085915e8affffd1199a8affff
+d9e6668bffffdbe6668bffffd1199a8c5d8c85858b769185d1889c868b3808fb112b
+0780807a7f848f83941ff4fb7c0613bc5f0a0e8d89acf8d3b29377128eadf778e0f7
+63ad13bcf7f2f70e158bff00f1b334f71dff00e7666405ff00238000fffff2199cff
+00178000ffffe3999896ffffce3334968b998c948f84b986be8ab88b8c898d8a8bff
+fff499988affffec199cfffffeccccffffe78000fffffecccc08ff003dccccff0068
+6668588bffffc0e666ffff9566680513dcffffd98000fffffe9998ffffd6199a8aff
+ffdc80008b08350613bcf7300a13dc9fdbb9a5cd8b08bc06b095654e1f8bffff374c
+ccfb6bfffe94b334be8bf738ff0115199a8bffff9de666058b387a863b8885858b76
+9185bc8cff0032e6668cff0028199a8bff002666668bff0032999a8abd8a91918ba0
+8591083b8e7a908bde08ff0147e66604ff0036199a07cb95b1af1ea106ff00084ccc
+8bff0007e668ffffffb334ff00079998ffffff4ccc080efb61fb41a6f71cac8976f8
+2aac12bbaa7ad2f721d740ce5dab13b900bbf71e158f5a8e5c8b61958d958c908b92
+8b918b9289ff0001199affffffb3338cffffffcccdff00011999ffffffb33308ffff
+ffcccdfffffecccd05ab86926ea055a058ae6ab68ba38b9d919f97969392968b958b
+928995869186918191848b08848b8288868584848580877e87818686818b738b7998
+70d1fffff8999aff0011cccdfffffaccccff0012cccdfffff5999aff001133330813
+d600ff00086666ffffff800094ffffffb333ff0009999a8bc38bf2a68bee8bff0044
+4ccd5aff0027b33347ff00193333ffffc3cccdff00164ccdffffd83333ff000f8000
+8bc28bb4afa2ad8b0813d480f72c0a13da00f72d0a0efb3ffb64b1f75376f81fad95
+7712bdac13e8c7168b8bff0019e666ff00006666ff00126667ff0000199a08ffffff
+b333ffffff80008e8bff00004ccdff0000800005ff000f999aff0000199a93ffffff
+e666ffffe8199affffff8000089306a18ba0799e6808b243059a6f9b77997f9e7ca1
+83a78b08c1a79db0a28097761f7e8b7f827f7a7f798083818b768b75a074b60864d3
+0574ff002a199affffe64ccdff00151999ffffe2b333ff0001b333ff0000b3338cff
+0000999aff0001199aff0000b3338cd5e9f3f731c9f1ff000f4cccff00193334ff00
+02b334ff0007cccc8b8f8b8f868e848b868b6f896e8b08fb4b0613d8ffffdfe6668b
+fffff6999aff0006999affffee8000ff00036666fffffd999a8bfffffc6666fffffc
+66668bfffffd999a8a5e8568835aff0008ccccfffffc4cccff000c999afffffe199a
+ff000b999aff0002999a9fd4aaff00114ccca9ff0000b3340813e8f7148e0547fb06
+27fb243d22fffff76666fffff46666ffffff999afffffc999a8b86088493869a1e0e
+fb1e89acf85776f733b10195e7d3e0e0da03f797f70e15db078bff00456666ff002b
+4cccff0024e666ff002a199aff0026b334ff0027ccceff0024b334ff0026ccccff00
+264ccc8bd008e83fd5fb162afb025c236fa379a0b09da4a31e8b98839d8b9c8b968e
+969695a5a1b193b48b08f29f435d527623fb291ffb70078b397a86458885858b7691
+85bc8ca98cbe8bbd8ba88abd8a91918ba08591458e7a908bde080efb3689aaf80cad
+01a6e1bcdad0d403f785f7051597078ba0ff0024e666ff00186666ff00206666ff00
+12999aff0029b334a3aaff002b66668bff0038999a08e134b32d37305c55739f7ba3
+a49d9ca11e8b918a918b9208b4b993b7dca55b601e8b5e6a4bfb07850834078b3f7b
+874a88888889858b858b858d848e88b98cff001bcccd8cff002f33338bff002ecccd
+8bff001b33338ab98a8e8e8c928b91088b918a91888e4a8e7b8f8bd8080e8489acf7
+16b7f713adf78bad12f5e0f76cdc69e813fcf753f8ba154c0a60f7ab15ffffdc4ccd
+8bffffc9b3338c648c85858b769185d1889c868b3808fbd2fb0d0780807a7f848f83
+941ff71664068b387a86458885858b769185b28cff0035e6668cff0025199a8bff00
+23b3338bff001a4ccd89df8b0813faf75bc0efe11f8beb48c234a4088d0713fc4f0a
+b6fc7815f7110698959d97918793821ffb1bf713d00613fa4d0a0ecd81b4f7b7b7f7
+8cac01e2e0f7f6bc03e2f7d6153207fb60ff0083800064ff00668000f761bcf713f7
+461ea6be0798959d97918793821f4ef731068bff00504ccc9cff0003b334c7929191
+8ba08591658affffd733348affffe8cccc8bffffea80008bffffcf80008c5d8c8585
+8b769185d6849c888b3a08fb31fbf6f731078bde9a90d88e91918ba085915c8affff
+cf66668affffd8999a8b648b628c648c85858b769185c7889c868b3808fb31570780
+807a7f848f83941ff888165e07fb047cfb1afb3d1e5b8bffffd7199aff0012199aff
+ffe1e666ff001ce6665aba89d78bcc08c3070eca89acf9067701f761aa15f7760a0e
+65937698b2f7b0b1f788b36cac967712f4e0f74aacb2ac9bae13a3c0937e15ff0009
+6666ff000b999aff0000999affffff6666051367c0b08cc78cac8b08f76b06bbdb89
+8b1f99bd9acd93befffff5999891fffff48002ff00023333fffff2e666fffffccccd
+774368503f8b08fb0806617d9bba1f8bff006dcccde5ff006f33338c8b05e08b8e74
+8e5e9185a08b91918aa58aff001bb3348bff00224ccc8ba78cad8ca38591768b8585
+fffffd6666ffffd08000fffffd8000ffffefccccffffc8999afffffc800008ff007d
+999aff009b333405ff00024cccfffff94cccff00024cce84ff00024cccfffff8b334
+ff000c6666fffffe3334ff000accceff00021998ff0009ccccff0004b334fffffe4c
+cc99fffffd199aff00148000fffffce666ff0015333408ff0039b334ff00474ccc05
+fffffdb334ff000ee668fffff14cccff000f1998788b08ffffe0999affffd9666805
+fffffdb332ff000e1998fffffe4cceff000a1998ffffff6666ff000266688b8d8a8c
+888b081333c07a88838a738b08fb930613abc0ffffe180008bffffc580008c638c85
+858b769185d1889c868b38088bfffeabccccfb19ffff5c3333058e7c997a9e8b08b0
+ff002d999a15ff003bcccdff0049e66605fffffe199affffc64ccc7dfffff3e667ff
+ffd4199afffffbe66708ff00ade666ff0122666615ffffe3199affffdc66668bff00
+23999a05ff00e1b334ff00f2333415ffff5a1999ffff33ccccffffc433338b8bf748
+051333c0b7979fc11ed606ff002c66668bff0017ccce7dff00108000ffffe6333408
+0efb2881bcff00cfe666b1ff0077199aac01b0df03f818f85a15ffffd8b334ffffd0
+4ccc05ffffe680009e67ff000bb334ffffcdcccc8b348bfb05388bfb2c8bffffcf99
+9aff000a6666ffffd11999ff00183334ffffdb999a08ffffc46666ffffb7b333058d
+7c97809b8b08ff00378000ff0043999a05ff0020b333ffffe0b333ff002be667ffff
+edb333ff003ee6668bd78bc1aeb3bf889585907f8c66656e7b518bffffdc80008bff
+ffd6cccdff00146666ffffe11999ff0031666708ff00716666ff008a1999ff007733
+34ffffff199a05979291961f8bff0028b334fffff8e666ff002a3332ffffe8e666ff
+0020999a08ff002b3334ff0034800005879881957a8b08ffffbbb334ffff70199a15
+ff00003332fffffc6666ff0000199afffffc4ccc8bfffffc33348b8287fffffb3334
+80ffffffcccc0885ffffffe66605ff000a4cccff0049b33415ffffc2999affffb580
+00ffff84199afffffde666059ef705d194a38bff001a999a8bff001e199afffff5b3
+34ff000f9998ffffdce66608ffff528001ffff2d999915fffff68001ff001bb332ff
+fffab333ff002166678bff0026b33308ff00608000ffffff4ccd050efb53fb40b8f7
+f9b7f7e8ac01f753e003f753f77a15fb2907fb48576f6a1effffece6668bfffff1cc
+cdff000bcccd84ff000eb33385ff000cb333fffff73333ff000ccccdffffe7199a8b
+087d6d767567c079a11fb88baa93b4aeff002bb333ff00254ccdff003a4ccdff0033
+b3338bf72308f713e50798959d97918793821f27f78d068bde9c90c78e91918ba085
+91658affffd4b3348affffd94ccc8bffffdbb3338bffffcb4ccd8c598c85858b7691
+85db889c868b3808fb8d2b0780807a7f848f83941f0efbd7fb73b7f806b2f72fa7a8
+77f711ef12eeef35da13fceef8eb15850a13fa99fbae15343f0782817c81858e8393
+1fdffb0706fb1887fb0f591e808b7e8f849281957f9b758b08807677796eaf7d9e1f
+a08bbf8eb0aabab1a7d38bf75108dccd0797949a96908893821f40e606bd8fcb8b1e
+8f868e831e6f806382468289858d7b8d8508c18696858b52080ed4fb54acf729adf8
+ecad01afe7f7eddce4dd03f7e2f90415c08bb978b367088bfc488b43056c72697f62
+8b08fb17fb00f703f754f766f702e2eb1fff008b8000fcf815ff00068000ffff604c
+cdff00431998ffffd3b333ff003ae6688b08e2abb9aba27e99751f6f8b7d79867585
+7586776c8b086d7aa7f7341f8baa8bd48bf8940595888e7f1e808176787a8560a259
+97598b08fb47fb18fb2cfb58fb59f720fb0ff7401fff002db3348bff002a3332ff00
+078000ff0025999aff000e8000080e37fb50abf726b7f807ad01aee1f775dae2db03
+f7d6ff01706666159fffffe9999a8ffffff1199a8bffffe7e666088bfb468b57058b
+798a867efffff93333ffffe8999afffff3e667ffffe53332fffffee666fffff03334
+8b085134b5f72bf3b5d5db1fff001e66668bff001ab334fffff3e666ff0015e666ff
+ffe7800008ff00183334fffea3b33415ff00041998ffff5c1999ff00438000ffffd3
+cccdff003a33348b08e0aab8aaa17e99761f708b7d798676857686776d8b086e7aa7
+f7301f8be88b938bf7b405998796801e848bfffffa199afffff84cccfffff7e666ff
+fff4b3347e7987887fff0007ccccffffe06666ff0014800064ff0008b334ffffd599
+9a8b08fb0e3127fb182ecafb10f7241fff002ce6668bff001fccceff000ccccdff00
+1b8000ff00114ccd080e8381aa74acf798b2f7b4ad12f3e0f76ce7133cf7a4f8fe15
+670a38fc8415680a13bcff001cb334ffffd16666ff002b4cccffffd5999ac78b9a8b
+9c8d9590ff00038000ff0006e666ffffff8000ff0009199a87935e8b72ff0021999a
+71ff002b666608fb12f76605b699e5bf8bf48bbd7ab467ad5bb84d8e4c8b5c8b6184
+678b688b5c8c5c8c85858b76918508d1889c868b3808fb55480782817c81858e8393
+1fd6fb3d06137c6a0a0efb7389acf75cb2f6c955a712efda13d8f744f7fa15fffffe
+4ccdb3fffffe6666ff0019b334fffffb4ccdff000a4cccfffffde666ff0004999aff
+fffe199aff00036666838b6f807182468289858d7b8d85c18696868b51085c4c0782
+817c81858e83931fd2fb01068b387f874d8785858b769185ae8cb28cb38bb38bb98a
+ae8a91918ba0859145907f8e8bde08f701ee0797949a96908893821fffff94800006
+ff00024ccdff00164cccff000a9999ff0013ccceff000a999aff000fe6660813e896
+9ba2ac978b948b94fffffd999aff0007ccccfffff5b332ff0007999a81ff000b3334
+fffff2b334ff001166668b08a3a2a4a4ff0013199a79ff001ce666611f5c8b625f74
+64088580fffffb333393ffffffcccd90080e7789acf856b7e4ac01f790e003f7e5f7
+0e15ff0087b334078bff001dccccff0001199aff0010e666ff00106666ff001d999a
+08ff00514cccf727ff003233348b0598959d97918793821fffffdc33348bff000dcc
+cca405a7ff0032b334ff00164ccc94ff002cb334ff00044ccc91918ba085916f8a6b
+8a748b748b678c6b8c85858b769185ff002c4ccc88ff000fe668fffff66668ffffea
+9998ffffd7999808ffffece66867ffff2db3328bffffeccccdff0021cccc05ffffe7
+ccccff002a999c8fff00099998c38e91918ba08591678a658a638b648b6a8c6d8c85
+858c769185b588ff00113333fffffa1998ff00228000ffffc5e668089875ffffe44c
+cd8b0580807a7f848f83941fff003ee6668bff005c199afb2f05ff00118000ffffe2
+8000ff00038000fffff580008b6608fb13078b387a863b8885858b769185bc8cff00
+3466668cff0026999a8bff0026b3348bff00324ccc8abd8a91918ba085913b8e7a90
+8bde08ff00366666f7fb15ffffbb999afb150583fffff0ccccfffffb3334ff00014c
+ce82ff000fe66608ffffb81999f713050e3bfb7cdbf813b2f714ac01f760fb3415ff
+000f999aff001bcccdff000d1999ff001c9999ff000c4ccdff001d999aff0037999a
+ff0086199aff0026999aff005a8000ff0023e666ff0050666608ff0052e666069794
+9a96908893821fffffb5999a06ff0009b332ff00156666ff0009b334ff0015199a95
+ff00158000ff0013b334ff002a4cccff000e4ccc9bbaff0005b33491918ba0859177
+8a748a6f8b6d8b6c8c6d8c85858b76918508ff001f999a88ff00206666857b6708ff
+ffdc199a38fb298bffffe51999ca05ffffedffffff002a3334fffffacccdff001280
+00c3ff00044ccc91918ba08591668a638a678b698b708c778c85858b769185ff0027
+b333869882ff001a33334e08ff0016cccc56ffffb94ccd8b0582817c81858e83931f
+ff005f80008bff00498000fb3f05ff0008b333ffffebe666ff000f4ccdffffd2199a
+816ffffff4199affffde999afffff3e666ffffe466667c6c80777d82728b7d8b878e
+808b086e7c6d7e769f7ba61fa08bb393afcb08ff00843334f81b15ffffd199982005
+84ffffefe666fffff7999afffffd4ccdfffff78000ff0013cccd08ffffd2cccdf505
+0efb1e81acf804bb62b412e6d9f735d84bde13b4f73df75815f718078b9891929391
+a5a0ada2a78bbd8ba1638b6c8b5e765d4178083cf7381513d885aafffff56666a6ff
+ffcd999a8bffffd9b3338b677affffeb4ccd77ff0001b333fffff3b3348ffffff799
+98ff000b4ccdfffff9b334ff00078000ff00063334ff0010ccccff0009ccccff000c
+b3348b08a88c645d1ffb2707fb22d970d4dddec1c4a37f97746e79767e1e8b848c84
+8d878c888c858b80086c618065695c9cf7051e8b928e8f8e8c08e1a00513b4eba3d0
+c08bcf8bdd53a5458bffffdd33348bffffe1cccc835f6908777b050e3781b7f807ad
+01aee1f775da03f7d6ff01706666158d0aadfffeaa199a15ff000a999affffedcccd
+ff0013ccccffffedb333ff0025999a8b08bcafb390928295871ffffffa33348bffff
+f619987bfffff0b3348b08648ab3b81ff7bc07998796801e848bfffffa199afffff8
+4cccfffff7e666fffff4b3347e7987887fff0007ccccffffe06666ff0014800064ff
+0008b334ffffd5999a8b08fb0e3127fb182ecafb10f7241fff00324ccc8bff0021e6
+68ff0010199aff001dccccff00146666080e4782adf807b701e9daf775e103f759ff
+003d999a1577ff0016666687ff000ee6668bff0018199a08f77a078b9d8c9098ff00
+06ccccff00176666ff000c199aff0024cccdff0001199aff000fcccd8b08c5d859fb
+192361373b1fffffe1999a8bffffe54cccff000c199affffea199aff001880000869
+ff0155e66615fffff56666ff00123334ffffec3334ff00124cccffffda66668b085a
+6763868494818f1fff0005cccd8bff000433339ba08b08b28c635e1ffbbc077d8f80
+961e928bff0005e666ff0007b333ff0008199aff000b4ccd989d8f8e97fffff83333
+ff001f999affffeb8000bcfffff74ccdff002a66668b08f70edbff007ae666ff0077
+199af7134cdbfb241fffffcdb3338bffffde199affffefe666ffffe23333ffffeb99
+9a080e2581adf807b7f775ad01d9daf769e103f742f7ff15780a7af71015f72db9a3
+ac1ea98b9b7f99689379997fa08b9f8b9b9c8ba18b9c829d769b719d718e658b0837
+2e42fb311ffc21078b64ff00003333fffff5cccdfffffbcccdffffea333390839087
+978bff0006199aff0005cccdff0009e666ff00094ccdff0007b333ff0008e666ff00
+0a4ccd97918b96fffff6cccdff0016e666ffffecb333ff001dcccdfffffa8000ff00
+234ccd8b08f1f70be8f733f70e31d6341fffffd5199a8bffffd9e6667a6c6ffffff9
+b333fffffa4cccfffffc4ccdff0001b3348b94080efb3681acf803bc01b1e2f74de1
+03aef7e6158f829387948aadb7b6a1b68b08d4c841fb09fb025b49491f508b83ae87
+ae88a67d94768b08766f7e6c54c463ebeef5e4f722f71543e4fb121f4f8b56785939
+080efb3f81bcf711a4f76dac12b0e1f74ee572ac13f4f80af71515f7770aac98158b
+ff0011b333fffff96666ff000de667fffff4999aff00076666fffff58000ff0006cc
+cdfffff16666ff00013333fffff2199a8bffffb080008bffffbe199affffa03333ff
+fff06666ffffe0cccd55ad7fdf8bce8bd6b8dfd28b0813f8c18b986f8e6dff0002b3
+34ffffe56666ff00064cccffffe9999aae8b08a2a29ca3ce40ab46fb1a3723fb101f
+8b33ae3bd962776a786e776a9184ff000e666686ff000b999a8a9daaa2af9fab9788
+a88b988bd38becc18bed080e2ffb50abf726baf803aef760a8a57701b2e0f76fd6e6
+db03ff0158b334fffff6e6661596fb20ff003eccccffffd9199aff003680008b08e0
+aab8aaa17e99761f708b7d798676857686776d8b086e76a9f72e1f8be38b988bf85a
+05cc8eb38b1e92878e821effffe6e66681ffffba999a7effffd7800088088d73058b
+88ff0002ccccfffffe3334ff00033334ffffffcccc08ab89059f957e4a1ffb260774
+985f94778b498b5f756365606073508b418bfb0fc731f7008bb38bbdabb9b0087407
+8bfffff68000ff00003334fffff6e666ff00006666fffff74ccd08ffffff6666ffff
+eb4ccd05f7210468075e676476718b558b54c68bf7118bd398b39aa0aabab58e9f8b
+ba8ba676a365080e5481baf803aef775ad01b2e0f76fd6f5dc03f7ebf871154f0774
+985f94778b498b5f756365606073508b418bfb0fc731f7008bb38bbdabb9b0088d8a
+8945a28b05a19db798c9960888a25b9005ffffea999aff00023333fffffc6666ff00
+05cccd8bbd08f7fa07f70c9dd1c01ea38b92788f779070997da68ba58b94a08b9c8b
+9c809b7c98779d7597628b0848354cfb321ffc13045e676476718b558b54c68bf711
+8bd398b39aa0aabab58e9f8bba8ba676a365080efb3c7fbcf767b2f709ac01b0e1f7
+59e203f7d1f7b315fb47890581869094dfc3a0b11fa38bc4879efb0508fb98fb5315
+7f8a83838881b357b066d78b08ff006d3334ff006eccccff00644ccdff007bb333f7
+323bce27fb1f583137809285971ff79c8d05ffff66cccdffffb6b333ffffc63333ff
+ffc94ccd1e518b63a066b1080efb2883acf70eadf765bc01bbe1f758e203f7def727
+15f7540a3af75415f7550a0e8781acf807bb01bbd8f752df03ff011ee666ff014b66
+6615ffff93999affffc9199affff7d8000ffffb666668bffff9d199a085aa54af704
+f73db7f71df7011e8bff0024b334fffff88000ff00224cccfffff1ccccff001db334
+ff00186668ff00114cccff00219998ff0014199aff0014999aff00073332fffffc66
+66fffff66668ffffff4cceffffefb332ff0002199afffff23334ff00069998ffffd3
+8000ff0017e668fffff54cccff000fccccff00026666ff0019b334ff0003ccce9fff
+000f199aff002b3334ff002acccc08fffff23330ff001233340577fffff0e666ffff
+f5e668fffff96666ffffea3334fffffcccccffffed3332fffffd3334fffff8999a9a
+fffffcccccff0015ccccfffffab334ff0023999aff000bb334a3ff000d1998ff001b
+333408fffff08000ff0008e66605ffffdb6668ffffd74ccc57ffffdd8000ffffcc66
+666effffde999aff002c999affffcbe666ff001c199affffbde6668b498b3a546858
+ff00024ccdfffff74cccff0004b333fffffab3349689b3b2beaebb8bff00184ccd8b
+bdfffff6199aff001f9999ffffcb4ccc08ff0010999affffda333415ff0007333474
+ff00044cccffffe3cccc8bffffdd999a08fb2c486a5c5c6eabc21e8bff0048999aff
+00538000ff00388000eaff00368000080efb5a81b1f74aacf737ac12b7da4fd2f723
+d513f4f70ff70d15f7780a13ecf7790a13f4f77a0a0efb5b81b0f745b2f73ba812f7
+9bd250d913e8f7a7f7041556656b501e5c8b659b64a6fffff8800087fffff96666ff
+fff94cccfffffe199afffff6b334ac6cc16eca8bf71e8ba6d58bc40813f08ba28bc0
+31a9088d07ff002e4cccff00134ccdff0018b334ff00237fff8bff002b333408b36a
+d3fb0b3e4967676e9e83971ea18b969b949c97a1a4a4b28b08abb66e4b4e6779601f
+8a8b5f90858b087980857f7f9382a11f938bae90938b08c3ad62531f0efb2981b0f7
+45b2f73ba8ff00a919987712f79bd250d9ffffc4e666ff0011ccce13f8ff00cf999a
+ff01b6333415ff0000b333ffffff800005fffff7b334ff0000ccccfffff74ccdff00
+008000fffff6b3338b083e4967676e9e83971fa18b969b949c97a1a4a4b28b08abb6
+6e4b4e6779601f8a8b5f90858b087980857f7f9382a11f938bae90938b0813f4c3ad
+625356656b501f5c8b659b64a6fffff8800087fffff96666fffff94cccfffffe199a
+fffff6b334ac6cc16eca8bf71e8ba6d58bc40813f88ba28bc031a9088d07ff002e4c
+ccff00134ccdff0018b334ff00237fff8bff002b33348bff001f4cccffffebccccff
+0032ccceffffbe4cceff0014b332ff000dccccff001accceff00156666ff00224ccc
+ff000f4cceff0010199aff00013332fffff5ccccff0006cccefffff13334ff000819
+9afffff4999aff001a3332ffffdb6666ff001a199aff0001666698ff00094cceff00
+153334ff000f1998ff000ae666ff0016999aff0012e666ff0039ccce08ffffeb6666
+ff0009cccc05fffff5199affffe96668fffff9e666fffff59998ffffee199afffff3
+3334fffff0800080fffff2b334ff000a1998fffff33332ff0011e6680813f2ffffeb
+199aff001d4cccffffff6666ff001a9998ffffff4cceff001e333408ffffee3332ff
+0000cccc05fffff0b334ffffc64cd068ffffc4999867ffffcb3334080e2081caf71a
+c2f71aca01adb2f7e0b70314e0f79af84b15fb01fb0b46fb38fb1df70e3cf703f722
+b3cbc01f8bbb66b44d9ed2a1a7af8bb108c16bd5fb2f1efc1604fb1953c7ecbaadf7
+0bf729f6b574531f8b646e754c7e64966193758b086d7b8278789c83ad1fb58bab94
+a492cb7ca66f8b6708474e88391e0efbb0fb62b5ff01656666ff002be667ff00a0b3
+33ac01f715da03f715f7c715ffffba4ccdffffa8cccd07fffff43334ffffffb334ff
+fff5cccdfffff2999a8bfffff066668bfffff73333ff00053333fffff9cccdff0009
+8000ff0000666608ff005e8000ffff6a999a06fb48696f6c1e7e8b85928495829780
+986f8b087e747e766ab27aa01fa28bb48cb5aec1b6adcd8bf71208ff00806666ca07
+98ffffff999aff000a80009d8bff000bb3338b94fffffc8000ff00054ccdfffff54c
+ccff00004ccd08ffffb7b334ff0045b333068bde968ec89091918ba08591678affff
+d4999a8affffdf66668b6e8b5b8c648c85858b769185c8879b878b38080e54fb82ac
+f757b7f807adf775ad12afe146d8f767daf3dc13fbf7ebf87115ffffc4333407ffff
+e3999aff000f9998ffffde6666ff00063334668b08fb0e3527fb182ec6fb10f7241f
+c48ba99f9a98087307fb205c4b411e13f75c8b68b2839ffffff84ccdff0013199aff
+fff7b333ff000fe666708b08767e7c7657f064c31fc08bff002a199aff00086666ff
+0027e666ff001c999ac0b1a1d48bf108f829078bff00058000ffffff6666ff0004e6
+66fffffe999aff0004199a08ff002a800007f70c9dd1c01ea38b92788f779070997d
+a68ba58b94a08b9c8b9c809b7c98779d7597628b0848354cfb321f89fb2115fbac07
+71776a89788b0813fb5138b5f72bf3b1d5db1fb58bab73a65e080e2afb82aaf759b7
+f807ad01afe0f770da03f8389715f82907998796801e848b8484847f087c73056aa8
+60965a8b08fb0e3527fb182ec6fb10f7241fc48ba99f9a98087307fb205c4b411e5c
+8b68b2839ffffff84ccdff0013199afffff7b333ff000fe666708b08767e7c7657f0
+64c31fc08bff002a199aff00086666ff0027e666ff001c999ac0b1a1d48bf1083cf7
+d815fbac0771776a89788b085138b5f72bf3b1d5db1fb58bab73a65e080e4181acf7
+29acf75dac12addef78fd567a713f8f804e615650776ffffecb33370fffff54ccd69
+8b08fb0d5beef6f706d4cad31f13f4e28bb2789d31ff00094cccfffffc3334ff0009
+66688dff00094cccff0003ccccfffffee666b7fffffe3334b7fffff7e666b7638b4a
+935d8b08fb20292cfb1d25d4fb07f72e1f13f8d88bff0034b3349eff00334cccb108
+b7078bff0038199a91ff0013e666aa9091918ba08591798affffe3b3348affffe14c
+cc8bffffe1b3348bffffd74ccc8c6e8c85858b76918508c88790ffffee199a8bffff
+c4e666080e43fb5eaff8c8ac01f73ebad0c603ff017db334f7df15ffff939998ffff
+0d4ccdfffff0b334ff0022b333ffffaae666f76405ffffec999aff002f6666fffffd
+3333ff000c999aff00354ccd9291918ba085916a8a688a6a8b6a8b6d8c6d8c85858b
+769185bffffff9b334ff00073333ffffef9998ff00153333ffffcdb33408ff008999
+9afbda623905fffff76666ffffeecccdfffff7999affffec33338b780865ac72b8c5
+b2afb41e8baffffff94cccff00344ccd62ff004fffff08ff007a199aff0118b33405
+ff0013199aff002bccccff000b8000ff00193334c29091918ba08591778a738a718b
+6a8b698c728c85858b769185c187ff0007199afffff3199affffe9999affffcde666
+08ffff5b4cccfc60158b9b9ba9a2b4a6468e808b7f08797b7d79757e98a31e0efb33
+7faeff0178ccccff0027333401f70dbad5d003f7657f15ff00558000ff00108000c5
+9f1f8ba989a554ed08cbf305ff0022199aff00376666ff00156666ff0016999aff00
+1e80008bff000c80008bff000a199a86ff000066668cff0005800091ff0004e666ff
+000b4cccfffffe999aff0009b3348493fffff4e66691ffffed999a8b5a8bffffe5b3
+34ffffdee666ffffdaccccffffc5199a085434ffffc18000f70405ffffde3333ff00
+3c999afffffacccdff00066666ffffc680008bffffeae6668bffffdb999a7e8388ff
+fffc8000fffff4ccccff0002999afffff6ccceff00066666fffff7e66694ff000380
+00ff000f8000ff0001cccc8f8ba88bff0007e666ffffee8000ff001c999affffccb3
+3408dafb22786905654983858b6c0865b571b91e62d4158b9b9ba9a3b4089180059c
+6f96648b7e08797c7b79757899a31e0e54fb6b76a6a9f73dbff7f8ac01e1daf766da
+03f80bff008f199a158bffffeae66682fffff3b33383fffff74ccd65ffffdab333ff
+ffcd6666ffffea4ccdffffd8999a8bffffeb999a8b76ff000d199afffff46666ff00
+16e66681ff0013cccd89ff001b33338ba908f72c078bdd958fbf9090918ba086916f
+8a698a638b638b6a8c6a8c86858b769085c38696878b3908fb29078b54ff0003b333
+ffffcf8000ff00174ccdffffe18000ff0010cccd75ff001f33337fae8bff0031199a
+8bff003be66698c8cfff00036666ff0003cccdff00066666ff000a33338b7d08ffff
+ff3334fb54054a87638b1e848f88941ea495d699b38e8d93899b8591578e7f868bdf
+08f828078bdeff000bcccc8fc58f91918ba085916a8affffdb33348a638b658bffff
+df33348c6f8c85858b769185ff0032cccc8794878b38080e4089a8f801baf775ad12
+e3d6f723d677d613f4e3f86715fc1f078b6efffff7199afffff5999affffdde666ff
+fffc66660878890586ffffff800089fffffd80008b86088b788d89058bce8dafb2cf
+898b1e8d8d8b9e058b9087ff0002999a87ff0000666608788d05ffffdf4ccdff0003
+6666fffff5b333ff000a999a8ba808f78b07bbbab6a5a88b08c3a17b3a1ffb73078b
+6efffff6e666fffff5999affffde199afffffc66660878890586ffffff800088ffff
+fd80008b86088b788d89058bcf8daeb3cf898b1e8d8d8b9e058b9087ff0002999a87
+ff0000666608788d05ffffdf6666ff00036666fffff5999aff000a999a8ba808f768
+07f267bf431e648b507b484808f71407f730bba3ac1e13f8a98b9e7e986a937a9880
+9f8b9e8b9a9a8ba08b9b829c779a729c7192658b08373042fb321f0e40fb71aff74b
+a8f801baf775ad12e3d6f723d677d613faf848f70115f74307f267bf431e648b507b
+484808f71407f730bba3ac1e13fca98b9e7e986a937a98809f8b9e8b9a9a8ba08b9b
+829c779a729c7192658b08373042fb321ffc1f078b6efffff7199afffff5999affff
+dde666fffffc66660878890586ffffff800089fffffd80008b86088b788d89058bce
+8dafb2cf898b1e8d8d8b9e058b9087ff0002999a87ff0000666608788d05ffffdf4c
+cdff00036666fffff5b333ff000a999a8ba808f78b07bbbab6a5a88b0813fac3a17b
+3a1ffb7007fb0095fb2c5f1e808b8592859483958197718b0880787f796dad7d9d1f
+9f8bad8bb0aa08bab19bef8bf735080efbc189acf75bb3f72c9ff4ed12f4ed34da13
+f0f3f8eb15850a13f4e6fc7115f700c407ff000c4ccc8dff000ab334ff000fcccd8b
+ff000999998bff0004cccefffffc4cccff00068000fffff6b334ff00014ccc0848ff
+00334ccc06ff0031b3348fcb8b1e8f868e831effffe3800080ffffd8800082468289
+858d7b8d85ff00368000fffffae666ff000a8000fffffa199a8b52085c44077fffff
+fdb33482fffff14ccc8bfffff666668bfffffa66678efffffa3333948908dbfb0006
+8b3880884e8685858b769185ac8cb28cb38bb38bb18aac8a91918ba08591084e8f80
+8f8bde080efbce80c2f8177701dfda03dff7d615f77b0a0efbd689acf803ac01ecda
+03f744f7c715f77c0a0efbc889a8f78ab78fb9f7cb9f01f6d603f765f7d415838bff
+fff86666ff00014cccfffff8999aff00024cce08ff0103666607cc8fb38b1e92878e
+821e7281407d638889838d7b9185c58791888b4008ffff42666607fffff9199aff00
+024ccefffff8b333ff00014cccfffff833338b608b74647d509185958a968d95ac95
+9aa58bff000933338bff0009e667fffffd999aff0009e666fffffc199a08ffff424c
+cc078b3880864e8885858b769185ae8cb08cb38bb38bb18aac8a91918ba085914e8e
+80908bde08ff0092333407ff00034ccdffffff3332ff00034ccdffffff999aff0003
+66668bb98ba8b297c7858f818e808a7d618081758b080efb818aa8f791addca9f76c
+a99b95129da9f71dd66ca713fef7eef7cf1539f7a006cc8fb38b1e92878e821e7281
+407d638889838d7b9185c58791888b4008ffff41e66607ffffeb4ccdff001f6666ff
+ffe24ccdff0019b334ffffce66668b08755e77614db176e51fb2fb33068b3880864e
+8885858b769185ae8cb08cb38bb38bb18aac8a91918ba085914e8e80908bde08f733
+dd07fb35ad1550065b6d9ea8a39f94a31fc28ba359996c080efbf2fb7cabf9d2a9bc
+7601fb46d603f73dd3158bc48bf85a05cc8eb38b1e92878e821effffe6e66681ffff
+ba999a7effffd7800088088d73058b88ff0002cccdfffffe3334ff00033333ffffff
+cccc08ab89059f957e4a1f8bfc468b528b6705fb45d15cc7e0aab8aaa17e99761e70
+8b7d798676857686776d8b086e76a9f72e1f0e3cfb7faef75aacd3adf796adf768a9
+a67712eada61d7f756dc13fe80eaf70e158b3880864e8885858b769185ae8cb08cb3
+8bb38bb18aac8a91918ba085914e8e80908bde08ff00e1b33407ff00134ccdff0023
+b332ff00188000ff000b999aff001633338b08f7258bfb3cfbb49c7c059d8fa99296
+8b08d9aa6326fb004655591f13fd80f77d0a13fe80fffff5cccd8bfffff88000ff00
+033334fffffbb3338f08ff0092cccc07cc8fb38b1e92878e821e7281407d63888983
+8d7b9185c58791888b40080ef75781bf71a7f7f6ac12dadaf753daf753da141c137c
+f902d215ff00014cccffffe24ccc8dffffdc0001ff0004b334fffff5b333ff000219
+98fffffb6666ff0001e668fffffc999a938ba796a594d0948d91899b899155908090
+8bc508f757078bdd9890c28f91918ba085916d8a658a638b638bffffe133348c6d8c
+85858b769185ff0032cccc8696878b3908fb38078b7682fffff3b33383fffff74ccd
+0813bcffffd86668ffffd94cccffffda8000ffffebb334ffffe119988b08656fa3ce
+1ff742078bdd9390c18f90918ba08691728a668a638b638b6a8c728c86858b769085
+bd8794868b3908fb33078b7d8b7d8c7f5b565e7e648b086575a1ce1ff744078bdd95
+90bf8f90918ba08691728a668a638b638b688c6f8c86858b769085c28794868b3908
+fb3207329a45e31eff003333338bff003db333ff0012cccdff0034199aff0036ffff
+8eff0003333491908dfffff76666ff0009800062ff00268000ffffdf999abf8bc58b
+ff00344cccff00226666ff0029b334ff002e999a08ff00049998ff0005199aff0006
+e668ff0006e666ff000080007f080ef73981bbf800a801dfd6f749d6f747d603f8e6
+fb33158a3ca28b05a19db798c9960888a25b9005ffffea9998ff00023333fffffd66
+68ff0005cccd8bbd08f865078ba7ff00099998ff000ae666ff00206668ff0005199a
+089e8e05ff0004e668ff0000ccccff00031998ff000233348b90088b9e898d058b47
+896864468d8b1e89898b78058b86ff00041998fffffdccccff0004e668ffffff3334
+089e8805ff001f999886ff000b6668808b6f08fb89075b5a6b74688b086571a4cd1f
+f776078ba7ff000a999aff000ae666ff00206666ff0005199a089e8e05ff0004e666
+ff0000ccccff0003199aff000233348b90088b9e898d058b47896764478d8b1e8989
+8b78058b868ffffffd999a8fffffff6666089e8805ff0020ccccfffffaccccff000a
+3334fffff533348b6f08fb62078b7c8b7e8d7e5b576b79648b086571a2cd1ff77807
+8ba7ff000a4ccdff000accccff0020b333ff00053334089e8e05ff0004e666ff0000
+ccccff0003199aff000233348b90088b9e898d058b47896863478d8b1e89898b7805
+8b868ffffffd999a8fffffff6666089f8805ff001eb333fffffb6666ff000b4ccdff
+fff4999a8b6f08fb6107329a44e31ec18bbca5c4c7925dac63c28bc98bb5aebbbc08
+8e8b88fb05050ef74ffb71aff74ba8f7fca377bb12f1d6f74dd6f74fd613def94ff7
+0115f73f07e47ad1331e558b5674524f84b868b1538b4d8b5d695c5908888b8edf05
+ff00026666fffffe6666ff0000999afffffd999a1e13eeffffe38000806482ffffb9
+800080088d73b68705ff000e6666fffffe4cccff0007999afffff5b3348b5908fb8d
+078b6efffff7199afffff5999affffdde666fffffc66660878890586ffffff800088
+fffffd80008b86088b788d8905b38ca48cb28bb48ba08ab38a088d8d8b9e058b9087
+ff0002666687ff0000999a087d8d05ffffe3999aff0004199afffff16666ff0009e6
+668ba808f78c0713debabcb0a1ae8b08b1a773481ffb78078b6e7efffff5e6666eff
+fffc199a087c890586ffffff4ccd88fffffdb3338b86088b788d8905b38c9f8cb28b
+b48ba08ab38a088d8d8b9e058b90fffffbe666ff00023333fffffb199aff0000cccd
+087f8d05ffffe3199aff0004ccccfffff0e666ff000933348ba808f765078b998b99
+8a97bbc0ae9cb28b08b1a775481ffb77078cfb0094fb2c5f8b808b85928594839581
+97718b0880787f796dad7d9d1f9f8bad8bb0aa08bab19bee8bf736080e43fb71aff7
+4ba8f7fca377bb12e6d6f75ad613dcf73af70115f76107bec7b19cb78b08c0976a45
+1ffb6c078b6e80fffff6999a6bfffffb6666087d890586ffffff4ccd88fffffdb333
+8b86088b788d8905b38c9f8cb28bb48ba58ab38a088d8d8b9e058b9087ff00028000
+86ff0000800008788d05ffffe0b334ff00034cccfffff54cccff000ab3348ba808f7
+6507e477d0311e588b5b7d4b4008888b8ee405ff00026666fffffe6666ff0000999a
+fffffd999a1e13ecffffe38000806482ffffb9800080088d73b68705ff000e6666ff
+fffe4cccff0007999afffff5b3348b5908fb8a07fb0095fb2c5f1e808b8592859483
+958197718b0880787f796dad7d9d1f9f8bad8bb0aa08bab19bef8bf735080e43fb71
+aff74ba8f7fca377bb12e6d6f75ad613dcf800f701158bfb359327ba65b06cb28ba2
+8b089dad99a99d7897801f718b817f838185828584808b085f95f72af7021ff76207
+e477d0311e588b5b7d4b4008888b8ee405ff00026666fffffe6666ff0000999affff
+fd999a1e13ecffffe38000806482ffffb9800080088d73b68705ff000e6666fffffe
+4cccff0007999afffff5b3348b5908fb8d078b6efffff6199afffff58000ffffdee6
+66fffffc80000878890586ffffff800088fffffd80008b86088b788d8905b38ca48c
+b28bb48ba08ab38a088d8d8b9e058b90fffffce666ff00024ccdfffffb199aff0000
+b333087d8d05ffffdf3333ff0004b333fffff5cccdff00094ccd8ba808f7860713dc
+bec7b19cb78b08c0976a451f0e6a947697a6f80ba812f3b8f797b81378cfa6156d06
+858988871f75078bc68db0b2c5898b1ea00791868d881e6e066c8594b01f8bf795f7
+87fbd10513b8967d96809b8b089796989f1ff7e307b09094ab1ea806918b8c8f8c8e
+08a1078b50896565508d8b1e7507888c87921ea906ac8f7d6b1f8bfb93fb93f7defb
+0f8b8b7505878e888f1eaa06ac8e82681ffbb1076a8b7e671e0e3081aef73fb2f73d
+ae01b4ff0057cccdff00f83333e103b4f761158a0aff014fcccc8215ff0000199aff
+fffb6666ff0000199afffffb4ccd8bfffffb4ccd8bfb124a6c5c8bffffa580008bff
+ffda8000ff005f8000fffff7cccdff004b800008ff00f57fffb215ffff08b33406ff
+0001199aff0054b334ff00164cccff00544cccff0057999a8bff004acccc8bff0031
+ccce50ff000bb332fb02080edf89a870adf739abf738ad70a812a8e0f765d6f70da8
+caa77ca713af00f7aea615244abbf71ef72aceb2d6b6a3896d1ffbca07748581681e
+133780f77ff80415cb8b9e56966608a78f0513374084b184b28ab608132f40898d05
+1337408b44896d1efb330613af40668b548d878b08fb212b31fb20fb20f24cf71b1f
+136740f77e0a13a740a9c6898b1f1377408d8d9ff7076f8e057f57746b588b08fb01
+067a7d909e1ff721d807a58b94808f77088f75058c898d888f8b08a08b8d8d0588a3
+889f8ba48ba38fa78da2088d8a8c891e7706888b89888a88088676058677847f708b
+083ef721069c97919e1e0ef70a7faef787b1f4ac01add8f761a6a6a6f75ddd03f93c
+f75615f038f727fb8bfb4dfb17fb15fb11fb24e653e51ecc8bc0aca5d0a83cc274be
+8b08e0f0b5f7381ffccd8c15f722ead3f72accf7456cfb45fb0b67503a1e538b67b2
+78d09ebf93b88ba308ac7f9e6e717d77651e8b778f62a05576436767568b082975dc
+e61ff797b5158b79876f805e8b8f7fb08bb808a2909693968e7e7b1e0e71fb7ea8f7
+5aaaf812acf7977701abd7f720d6f720d703f78ca315629228aa8bf72d8bf71bd7ba
+cb9608d6fc1415f81207e478be588bfb0b8b6581fb19fb16750840f8af15fb0f074f
+88fb304d8bfb328b50a9fb2bf74e7d08fb2b078b6ffffff5cccdfffff53333ffffdf
+3333fffffacccd08788805fffffb199affffff3333fffffce666fffffdcccd8b8608
+8b788d89058bcf8dafb2cf898b1e8d8d8b9e058b9087ff0002666687ff0000999a08
+788e05ffffe0ccccff0004e666fffff43334ff000b199a8ba708f72b07f7129ae5eb
+8bf7038bf719fb03dc229508f72407cc8eb38b1e92878e821effffe6e66681ffffba
+999a7effffd7800088088d73058b88ff0002cccdfffffe3334ff00033333ffffffcc
+cc08ab89059f957e4a1f0efb7381c967a7f7f6ac12f750da1370f753d215ff0001b3
+3363ff0001999affffe64ccdff0004b333fffff5b333ff0002199afffffb6666ff00
+01e666fffffc999a938ba796a594d0948d91899b8991559080908bc508f757078bde
+978fc98f91918ba08591688a648a638b638b5d8c688c85858b769185d18697888b38
+08fb1f078b717f747f790813b0807b746a7f8b828b82ff00026666fffff83333ff00
+0a4ccdfffff8666795fffff4ccccff000d4ccdffffee999a8b0873747272ffffece6
+669dffffe3199ab51fba8bb4b7a2b2089196ff0004cccd83ff0000333386080efb84
+81c86aa3f8d4a812f756d613b0f7a1f8d1158ba8ff000a6666ff000a9998ff002099
+9aff00036668089e8d0590ff000080008dff000280008b90088b9e8a8d05668a6c8a
+678b658b608c668c0889898b78058b868ffffffd4ccc90ffffffb33408a88905ff00
+1fcccdfffffdccccff000b3333fffff433348b6e08fc47078b7e867e848273697579
+808b848b848e859181958093778b08717a7b71719a77b41fba8bb7bea5b2088e8b88
+3105fffffd999aff0001999affffff6666ff000266661e1370ff001c800096b294ff
+00468000960889a3608f05fffff1999aff0001b333fffff86666ff000a4ccd8bbd08
+0efb56fb42b2f70faff80ea801f765d8d8d903f7d8f826159c06928c8f8d1fa2078b
+4f8964624c8d8b1e7507868e89901e9b06b08d7c6b1ffb86077860635d738b808b83
+91889587947aad6e8b086e7c7c6f76986ccb1fad8ba297a2a19996a1a4929b088c77
+05fb42c555c3c5c59ab8977aa1731e758b817b867b8980817f7b8b608b869e8af731
+08f7ce07a58ba0b11e0efb84fb7ea8f8dbc857a312ecd613d0ecfb34158b6efffff5
+999afffff56666ffffdf6666fffffc999a0878890586ffffff800089fffffd80008b
+86088b788c8905b08caa8caf8bb18bb68ab08a088d8d8b9e058b9087ff0002b33386
+ff00004ccd086e8d05ffffe03333ff00023333fffff4cccdff000bcccd8ba808f857
+078b9890989294a3ada19d968b928b92889185958196839f8b08a59c9ba5a57c9f62
+1f5c8b5f58716408888b8ee505ff00026666fffffe6666ff0000999afffffd999a1e
+13b0ffffe38000806482ffffb9800080088d73b68705ff000e6666fffffe4cccff00
+07999afffff5b3348b59080efb79fb7cb3f8cba98caf01e0d6ebd303caf811159d8f
+7a771ffbdc078efb1ba2fb05f7048b08aad5a2b89b8298741f738b817a857888807f
+81798b085a7dbbf7241ff7d3079aaeb5bfa58b948b94888f7f907e9a69a48b08a79e
+9ea7ad6b9c5f1f408b5f38898808e17607767e707d4081086d07958e9d8e9e8b080e
+fb8b89a8f80faf01e3d6e4d903f737d415f73107f732a49dad1e9d8b95768d7f9177
+977ea38b089aa094a9b553a0571f6f8b767f72795a6380468b3308fb22077488746c
+1e6f06858a86881f76078bcd8db5b4ca898b1ea1078e8a8f851e70066c889aaa1f0e
+fb8b89a8f80faf019ad9e4d603f74ad4156c887c6c1e7006858987881f75078bcb8d
+b4b5cd898b1ea0078e8a90841e70066c88a2a21ff722078be380d059b3739d759770
+8b08565476616da082991fa48b9798919f8d9795a09d8b08aca579fb321f0efb0e81
+b06eacf72facf74ba812ecdaf727e0133cf7d7f7d415ffffb5e666ffffd54cccffff
+e5199affffb9b3341e69f72c069e9897bf1eff00344cccff001db334ffffe4e666ff
+ffc9199a1ffb27fb5a15cb9307cf8bff0013999affffda199aff000b6666ffffe1e6
+660896640513bc9bffffc76666b2ffffdf999abb8b9a8ba98d9892ff00028000ff00
+0a4ccdff00004cccff00076666fffff73334ff000a4ccd678bffffefccccff000599
+9affffee3334ff003566660879c105fffff36666ff001ecccdffffe4999aff002133
+336a8e088c07ce91c0ff0029e6668bff0040199a8bd467b1fb1b8b728bffffdb6666
+89ffffd8999a8bffffd4b3338bffffe74ccd8c608c85858b769185c88796878b3808
+fb4d07137c8b3880884e8685858b769185b58cff001a4ccd8cff002bb3338bff0025
+66668bff000f999a8ab68a91918ba085915b90828e8bde080efb0e89a8f74bacf72f
+ac6eb012ecdaf727e013ccf7d7f70115ffffc9199affffe24cccffffe4e666ffffcb
+b334577e979e1ef72cad07ff00464cccff002ab334ffffe5199affffb5e6661ffb27
+f75a1513ec8bde948ebb9091918ba08591608afffff066668affffda999a8bffffd4
+4ccd8bffffe5b3338c618c85858b769185c88696888b3808fb4d078b3880874e8785
+858b769185b68cff0018b3338cff002b4ccd8bff002766668bff0024999a89a48bf7
+1b8bafb18bd48bff0040199a56ff0029e6664891088c07ac8eff001b6666ff002133
+34ff000c999aff001ecccc089dc10513dcff0011ccccff00356666ff00103334ff00
+05999aaf8bff0008ccccff000a4cccffffffb334ff00076668fffffd8000ff000a4c
+cc7e926d8d7c8b5b8b64ffffdf999a7bffffc7666608806405fffff4999affffe1e6
+66ffffec6666ffffda199a478b0883060efb61fb44aff716acf813ac12bbb264aa7a
+d2b8c4b2d755ab13f300f712fb4415c1c2b5b69881987b7d7a7e79777873726582bb
+c71fff0022e66607ff00044ccdffffffcccdff00041999ffffff999aff0004999aff
+fffeb333a684a687b08bc38bf2a68bee8bff00444ccd5aff0027b33347ff00193333
+0813e680ffffc3cccdff00164ccdffffd83333ff000f80008bc28bb4afa2ad8ba18b
+c583983691859f8c91918eaf8db08cac6c905b99578b0841485b4b1f8b42ac6cd86b
+0813eb00de699e768b608b5a5b76668b648bffffea4ccdff000d4cccfffff5b333ff
+000ab33475a280b785a48591788a8585ff0001ccccffffe9cccdff0001999affffea
+4ccdff00013334ffffeae66608fffffb66660613f300fb1607479b58c91e0efbb7fb
+6ab1f9dcad01e7d6036bfb0615787f7a7b62c171b51f9a8ba28caea8c7bc8cdc8bf6
+08f83907ea95eac51e9c8b9b7e9572907b927ea18b089d99999fa66ab3401f6f8b71
+8170764f5b883c8b2408fc4807fb2a6a70751e748b869a859a869c859a738b080efb
+b7fb6ab1f832b7f812ad01e7d6036bfb0615787f7a7b62c171b51f9a8ba28caea8c7
+bc8cdc8bf608f74dd20797969f9794888e801f3bf75406ea95eac51e9c8b9b7e9572
+907b927ea18b089d99999fa66ab3401f6f8b718170764f5b883c8b2408fb2f42077f
+817e7b829085941fdcfb8106fb2a6a70751e748b869a859a869c859a738b080efb8f
+fb6ab1f948ad01f724d5e4ce03f7ebfb0615738b857c857a867c867c748b087569a6
+f72a1ff7b4078bf289da4ebb71a070956f8b08416a637077997d9c1fa28b9198919b
+95a49b989c8b08c5952c2c1ffba5078b208c3ac75aad6ea38a9a8b08b5c1a5b49b7f
+9c781f0efbc3fb75a4f9f4ad015ea4f704d603f7ecf90b15a66ab3401e6f8b718170
+764f5b883d8b23088bfc598b7c05fb0f4f7d588b718b61b17cab8bc48bd8b393f736
+b5a27981ae9b0883a2057a847e85768108f868078bd690b9939c9cae9d9c9f8b9c8b
+9b7e9572907b927ea18b089d99999f1ffc00fdaf158bb6d2b3b7a3087d0727626e70
+826592a81e0efbab8bb2f7edc201f725da03f7a216998f97931f9807908a8c871e50
+f7c106d26ca75d1e5d8b5975645f8dfffff5b33491fffffa4ccc958aa59fa993a58b
+08a6916d4d1ffb912307817d87821f7707878e89901ef70c64064a87638b1efffff9
+999a8efffffd9999ff0004b3331eff000480008bff00088000ff0003e667ff00094c
+cdff00051999ff000b4ccdff00064ccdff000a3333ff00044ccdff000c8000ff0003
+800097ff0003666695ff000366678bff0006e6668bff000b999a88fffff966668bff
+006ee666080efbb9fb71aff8d3b201e4d603f738d615f7cfe90795998f941f9f078f
+888d861efb02f72f0651778b78053f7b6348898a8a881e6c07888c8a8e1eccfbae06
+8bfb359328ba65b06cb28ba28b089dad99a99d7897801f718b817f83818582858480
+8b085f95f72af7021f0e4b81ba84a6f749b2f70dac12e3daf758da13bcf883f7a915
+56b806a98fd48b1e8e888e861e868a7c8a7c8b6b8b678c698c85858b769185bc8898
+7f8b490863fb58b807a98fd48b1e8e888e861e868a7c8a7c8b6b8b678c698c85858b
+769185bb8799808b4a08624964cdfb040746a948ee1eb28bba9fbcb3908fff00094c
+cc8dff0000b33484ff00028000ffffe68000ff00088000ffffde80008b8b9388ff00
+048000ff00008000ff00068000ff0002800008137ca19dae9ac89291918b9a85914b
+90829e8bbc08f700c007fb1816fb06078b7889837d7f0813bc666b657b728b086d59
+99e41fed070e4a81acf7ffb81295a487d8f7b7d887a413d0f791a215374eded41f8b
+e3b6aeb59f0888dc058aa4858e7c8b08fb228b0513e07b2fa4890593b79190b08b08
+d38b905f0513d83c6556518b3c0835d430f72bf72ad2e6e11e8bda56c53cb10890b7
+d38b0513c4b08b9186935f08a48d7be7fb228b057c8b85888a7208883a0513d8b577
+b6688b3308424e38361e0e2281b2f7f8a7a87701e7daf77eb403f73fff01414ccc15
+f77f0a0e298aacf82e7701f73cab15558ffffffa6666ff000c3333ff0014e667ff00
+32cccd08ff0050b333f75805ff00103333ff00278000ff00053333ffffff4cccff00
+0f999affffd6333408ff0048199afb5505ff0011e6665bff00044ccc7fffffcab334
+8485858b769185ac8cae8cac8bac8ba98aa98a91918ba0859156ff00064ccc84ff00
+10199affffeb999aff0032999a08ffff806666f7d005859a85917e8b818bfffff919
+9afffff9999afffff8e666ffffef666608ffff7a999afbcd05ffffed4cceffffd419
+9afffff5199affffe6e666538685858b7691859f8ca38ca58bac8bad8aa48a91918b
+a08591080ef72c8aacf82e7701f8adab1585858b769185a98cae8caf8bb18bff001a
+cccc8aff001a33348a91918ba08591ffffd0e668ff0004ccccfffff51998ff000a33
+34ffffeae668bf08ffff7d1998f7d70585998391818b828b8385847b0826fb8a24f7
+8c0585998391818b828b8385857c08ffff7d8000fbd105ffffef999affffd7199aff
+ffeee666ffffe3e666588885858b7691859f8ca18ca98ba98bb58aa98a91918ba085
+91408fff000a4ccdff001ce666ff000e1999ff0023199a08ff0053999af7640595a4
+8fffffffccccff00083333ffffeb333408ff00564ccdfb6f05ff001280005c898156
+8785858b769185a98cb38ca98ba48bac8aa98a91918ba085915cff00048000fffff4
+4cccff001cb333ffffee199aff002ccccd08fffff9999a9bd1f7450598acff000233
+34ff00018000ff000ce666ffffdf800008ff004ffffefb6205ff0012e6685b8a7b5b
+88080e3b89acf8badb01f7c3f8e115fffff06666ffffe43334fffff2e666ffffe366
+64fffff3b334ffffe266683bfb55ffffd33333ffff996666ffffcbcccdffff8f999a
+ffffec4ccdffffd5b333fffff1b3337b5cfffffa4ccd85858b7691859f8ca28ca78b
+a98baa8aa98a0891918ba08591ffffe066668effffdf999a919baf08ff00633333f7
+7905ff0006ffffff0010199aff00086667ff0002b332ff00088000ffffec333408ff
+0058b332fb64059dffffd5ccccff00053334ffffed800053fffffbb33485858b7691
+85b08cb38caf8bad8ba68a9f8a91918ba08591ffffd84ccc907e94ffffe5cccec808
+ffff8ee666f79b05fffff74cccff0014199afffff0b334ff002de66695a7ff000be6
+66ff00216666ff000c199aff001b999a9aaa969f9994a48b998b8f88968b08a89aa9
+98a0779b701f768b6383674b080efb0f89acf803ac01f75fda03ff00706666f7d915
+ff005a999afb3a8b66058b3880884e8685858b769185b58ca58cb78bb68ba48ab68a
+91918ba085914e8f808f8bde088bbcff004b6666f72d05ff0014999ab698a5c39091
+918ba08591758a798a718b668b758c668c85858b769185c1878f7effffe8b3345908
+ffffc24cccfb12ffffc0e666f71205ffffe9199ab9ffffefcccdff000f999aff003e
+3333ff0005666691918ba08591668a6f8a628b688b7b8c668c85858b769185ff0039
+8000fffff93334ff00048000ffffedccccff001a66665b080efb3ffffffd6666ff00
+24999af7fdad957712bdacff015b999aff00384ccc13d8ff01674cccffff4a800015
+ff0034199afffff1b333ff0040199aff0019e667ff000b6666ff00298000ff000366
+66ff000c8000fffff9ccceff000f3333fffff0999aff00043333fffff28000ff0003
+b333ffffec333283fffffb3334ffffee999afffffab332ffffecb333ffffe74cce79
+ffffe7e666ff0006999affffdb6666ff000a19998fff00308000ff000fe666ff0039
+e6670893ff001d6666ff000433348b0597ad98bf92bdfffff98000ff0003b333ffff
+f48000ff00024ccd7f8b087d6e05ffffe68000ffffcb3333ffffeb999a75ffffcbe6
+66fffffecccd08fb1906d5e9f3f731c9f1ff000f4cccff00193334ff0002b334ff00
+07cccc8b8f8b8f868e848b868b6f896e8b08fb4b0613b8ffffdfe6668bfffff3999a
+ff0004999afffff18000ff00056666fffffd999a8bfffffc6666fffffc66668bffff
+fd999a8a5e8668825aff0008ccccfffffc4cccff000c999afffffe199aff000b999a
+ff0002999a9fd4aaff00114ccca9ff0000b3340813d8f7148e0547fb0627fb243d22
+fffff76666fffff46666ffffff999afffffc999a8b86088493869a1eff010b8000ff
+fffd66667fffffd480000579ffffbe66678dffffca9999ff003bccccffffef999a08
+0efb3a8bb2e5acf779b201f720aaf75ea903f809e815f7800afb3c2e15c706e2beb1
+c3c15c99731f668b6c7c76777a7b78697a6508498bf77af7f005949993968b920893
+858e801efb83066e8b89958a8f08768f6dfb29a6860590ad9cb49594969399909f8b
+08f7228bfb80fbfb05858288878b8508809b899e1ef5067c657f63846608aa840590
+af98b79bb5080efb47fb7faef7c3adf796ad01b3a6f789dc03f713f6159c7c059d8f
+a992968b08d9aa6326fb004655591f638b70b183a183a37e95748b08758179796bc5
+4ee0f70fe0e9f70bf53ac02b1ff72bf78e059ba691968b8f8b8f858d848b898b6785
+6e8b08fb5f067c8b829289910872068a5e855f835a08a588059fd4ada0a98b08f725
+060efb34ffff27333376ff000bcccda3f746a2f70fb2f777b5977712c3a3f78bd113
+73f7ccfb09157653566e4e8b085b5ab2bdbcb3b3bb1fcb8bba61ac580892a91567b9
+54b34f8b084d59594d4bc95ac71fc48bc3a1b5b20813bbff000a8000ffffe98000ff
+000a4cccffffe6e666ff0009199affffe6cccd08ff001733349105fffff5999aff00
+1de666fffff3ccccff001dccccfffff38000ff001a199aa4a8a0bb8bc38bf72027ab
+578d08f6f777051337969590978b9708133b90878e811efb8306748b818e88910813
+37798e79fb11a0890592b295a4989008137b948e968c9a8b08f72b8bfb1bfba9059c
+92a58f9c8bde8bb2568b318b7288758678080efb3a89a8f8ecaa01a7d4d2d6cfda03
+f78bd315f73c078bd0ff00146666ff0019999aff002f999aff00296666b9b3acb68b
+d308dd47b6242a294c426ba07a9fa29b969d1e8bff001a666884ff000399988b9d08
+b3c8b0bcc1bd6d411e8b50ffffe7b334ffffea8000ffffd74cccffffda80004b507d
+688b3508fb2b078b6efffff63333fffff4cccdffffdecccdfffffd33330873890586
+ffffff999a89fffffd66668b86088b788c8905bd8c9f8cb28bb48b9f8abd8a088d8d
+8b9e058b9087ff0002b33387ff00004ccd08738d05ffffdeb333ff0002cccdfffff7
+4ccdff000b33338ba8080efb3a89a8f8eaaa01b1dacfd6d2d403f74dd3158b6e8280
+6a8808738905878788861f8b788d8905bd8c9f8cb48bb28b9f8abd8a088c8d8b9e05
+90898e861e738d056a8e81968ba808f72b078be17dae4bc662b073a18bc608d5bda9
+c1bcc866631e8b7984878b7108799b80a29fa09cabd429ca2a244760391e8b43ac60
+b963bb629f718b46080efb3a80aaf8eaa801a4d4d2d6cfda03f788f8d1158ba89496
+ac8e08a38d058f8f8e901f8b9e898d05598a778a628b648b778c598c088a898b7805
+868d88901ea38905ac8895808b6e08fb2b078b359968cb50b466a3758b500841596d
+555a4eb0b31e8b9d928f8ba5089d7b967477767a6b42ed4cecf2cfb6dd1e8bd36ab6
+5db35bb477a58bd0080efb30fb71bdf8d5ac01afe1f759e203f78cf82a15c68b9368
+8f688e709982a08b08a0a798aac252b32b1fffffc9b3338bffffd6cccd8bffffd080
+0053ffffd53333ffffcd8000ffffe0cccdffffa433338bffff6b4ccd8bffff814ccd
+ff00124cccffffac6666ff0024b334ffffd74ccdff0024b333ffffd6b333ff003199
+9affffeb4ccdff003eb3338bff003f4ccc8bff0033b334ff00194ccdb3ff0032b333
+0878a0878b05ffffdcb334ffffe0b333ffffdb4cccfffff04ccd658b638b6a9b71ab
+ffffe4b333ff00214ccdfffff24ccdff004966668bff00714ccd8bff0088b333ff00
+0d4ccdff00550001ff001ab333ff00214cccff0018b333ff001f4cccff001a999aff
+0016b334ff0022b3338b080ef681aff785f700f78baf01b5ebf737f700f73aeb03f7
+f7f79f15a40a78f7f715640af7e3fbb915650a0efb0889acf74ea8f72cac12f6daf7
+2edb44e113f8f74ef78a15f7810a496e15d70613f4f7820a63f7eb15f7830a13f8f7
+840a0efb0b82caf71ac2f71aca01a9b7f7e0b20314e0f76d8215f701f70bd0f738f7
+1dfb0edafb03fb22634b561f8b5bb062c97844756f678b650855ab41f72f1ef81604
+f719c34f2a5c69fb0bfb292061a2c31f8bb2a8a1ca98b280b583a18b08a99b949e9e
+7a93691f618b6b8272844b9a70a78baf08cfc88edd1e0e357faef72da6f761add3ca
+12add8f796c062a613f8f89af8d515ffffcb4ccc8bffffb2999affffd61998fffff9
+8000ffff99999cffffdc4cceff00026666ffffd68000ff0003e666ffffdfcccc8b08
+fb20292cfb1d25d4fb07f72e1fd88bff0034b3349eff00334cccb108b7078bff0038
+199a91ff0013e666aa9091918ba08591798affffe3b3348affffe14ccc8bffffe1b3
+348bffffd74ccc8c6e8c85858b769185c88790ffffee199a8bffffc4e66608650776
+ffffecb33370fffff54ccd698b08fb0d5beef6f706d4cad31fe28bb2789d31ff0009
+4cccfffffc3334ff000966688dff00094cccff0003ccccfffffee666b7fffffe3334
+b7fffff7e666b7fffffb66668b86ff0000199afffffaccceff00003332ff0001e666
+ff001accce99ff0037e666ff002ee6668b938b958a9488089288948b928b08a0979c
+9b1fa17b9a771e0e8289acf746acf730ac01f6daf76ada03f873f7c715f7850a0efb
+b3fb45a8f8a9a7a877f711ef1279a8e0ef42da13f8c5fb2815727596a51f8bb3b4a7
+d4b20874072e636f701e13faccf86515fb8507708c758b1efb104f795f8b638b61ad
+79b38bc48bdbb793f736b6a28386ad9c0884a6057a84747f7682088bba8bf76705bd
+8fcb8b1e8f868e831e6f806382468289858d7b8d8508c18696858b520813fc70f7ae
+15850a0e52fb6d76a6a9f747acf803ac01f800da03f84ff7c7158bde968fc38f9191
+8ba08591618affffe8b3348affffd64ccc8bffffdc80008bfffff380008c608c8585
+8b769185b48796878b38083407ffffecccccff00008000fffff1e668ff0001999aff
+fff64cccff0003666680ff00078000fffff6e66694fffff4199a9b0842ed05ffffe2
+999aff00278000fffff76666ff000f8000879affffff3333ff0002e666ffffffcccd
+ff0002199a888b778a7f8a6d8b6c8b768c6d8c85858b769185ad87ff00194ccdffff
+fb999aff001ab333ffffde666608f718fb3a05ff0003999afffffb8000ff00036666
+fffffb80008b868b878b898787083330056d6b6883638785858b769185b08c998caf
+8bb18ba28ab08a91918ba08591538fff0017b333ff00234ccdff00094ccdff000bb3
+3308a2a8ff001f4cccadff0019b3349eff00163334ff00106666ff001ae666ff000b
+cccdff0012e666ff0002999a08fffec23334074a87638b1e848f88941ea495d699b3
+8e8d93899b8591578e7f868bdf080efb3489a870b5f7fca812edd6f753a613b8edf7
+f815fbaf078b6c8afffff5666667fffffd999a086d8905878789851f13788b780513
+b88d89051378a98cba8ca98b08f7310613b8a98bac8aa98a0894f71f708d0513787f
+3f7c765b8b08fb08f7ce068ba7ff000b8000ff000cccccff001e8000ff0003333408
+9e8d0590ff000080008fff000280008b90088b9e898d05668a6b8a658b678b6c8c66
+8c0889898b78058b868efffffd800090ffffff8000089e8905ff0020e666fffffc80
+00ff000a199afffff380008b6f080e2afb7ea8f757b7f807adf775ad01afe0f772d6
+f5dc03f7ebf7e415fbac0771776889788b085137b5f72bf3b2d5db1fb58bad73a65e
+08fc85048b6ffffff5ccccfffff44ccdffffdf3334fffffdb333086e890586ffffff
+b33388fffffd4ccd8b86088b788d8905b08cb48caf8bb18bab8ab08a088d8d8b9e05
+8b9087ff0002999a87ff0000666608788d056aff0003800081ff000a80008ba7088b
+f8b08bb18bc405f70c9dd1c01ea38b92788f779070997da68ba58b94a08b9c8b9c80
+9b7c98779d7597628b0848354cfb321fffffc4333407ffffe3999aff000f9998ffff
+de6666ff00063334668b08fb0e3527fb182ec6fb10f7241fc48bab9f9a98080efb3a
+89a8f767b2f76b76f72eaa01a7d4d2d6cfda03f78bd315f73af700078e928d908b92
+8b918a92879208ffff96999a06ff0006ccccb6ff0014999aa2b1acb9b3acb68bd308
+dd47b6242a294c426ba07a9fa29b969d1e8bff001a666884ff000399988b9d08b3c8
+b0bcc1bd6d411e8b50ffffe7b334ffffea8000ffffd74cccffffda8000ffffcf4ccd
+ffffd3199affffec4ccd6cfffff94cccffffcde66608ffff89199a06878589858b83
+8b858c858f8408ff0075333306ffffffe666fffffb3333ffffffe666868bfffffacc
+cd08fb2b078b6efffff63333fffff4cccdffffdecccdfffffd33330873890586ffff
+ff999a89fffffd66668b86088b788c8905bd8c9f8cb28bb48b9f8abd8a088d8d8b9e
+058b9087ff0002b33387ff00004ccd08738d05ffffdeb333ff0002cccdfffff74ccd
+ff000b33338ba8080efb3a89a8f767b2f76b76f72eaa01b1dacfd6d2d403ff0103cc
+ccf78215ff006e3334068e928d908b928b918a92879208ffff8f199a06fffff94ccc
+ff0032199affffec4ccdaaffffcf4ccdff002ce66662b073a18bc608d5bda9c1bcc8
+66631e8b7984878b7108799b80a29fa09cabd429ca2a244760391e8b43ac60b963ff
+00264ccdffffdf4cccff00148000ffffe8ccceff0006b333ffffd4e66608ffff9080
+0006878589858b838b858c858f8408f707fb3a068b6e82806a880873890587878886
+1f8b788d8905bd8c9f8cb48bb28b9f8abd8a088c8d8b9e0590898e861e738d056a8e
+81968ba808f72b078bff00053333ffffffe66690ffffffe666ff0004cccd080ef763
+81ba66adf7fab072aef75ea9a67712b0e1f770da9eac131f80f862f84b15f7360a13
+2f809fd4aaff00114ccca9ff0000b33408f7148e05ffffc26668ffff98ccccffffa8
+3330ffff80199affffb60002ffff9acccdffffdfccccff00096667fffffa999aff00
+13e6668bb108f85907cc8fb38b1e92878e821e7281407d638889838d7b9185bf8897
+908b3708fb1407848989841e139f80878b629c6a8b498b5f756365606071508b418b
+fb0fc931f7008bb28bb09fbcff00284cccff0004ccccff0003e667ff00098000ff00
+01cccdff0000b3348408ff00028000ffffe78000ff00088000ffffdd80008b8b9388
+90ff0000800091ff00028000ff000c4cccff000a199aff00106668ff00091999ff00
+16b332ff00074ccdffffffb334fffffe8000ffffffe666fffffe999a8bfffffe6666
+08136f808493869a1ef7cc880597ad98bf92bdfffff98000ff0003b333fffff48000
+ff00024ccd7f8b087d6e05ffffe68000ffffcb3333ffffeb999875ffffcbe668ffff
+fecccd08fb1906d5e9f3f731c9f1ff000f4cccff00193334ff0002b334ff0007cccc
+8b8f8b8f868e848b868b6f896e8b08fb4b06ffffdfe6668bfffff3999aff0004999a
+fffff18000ff0005666608fb0bfbcf15f7050a139f80f7060a0ef734fb7faef752ba
+84a6b9adf796ad72aef75ea9a67712b2e1f770da57d7f756dc13d7d0f7edf710157b
+0a80fffef84ccc157c0a13bbd0a19dae9ac89291918b9a85914b90829e8bbc08ff00
+e9999a07ff00116666ff001766669f93ff0012999a8b08f7258bfb3cfbb49c7c059d
+8fa992968b08d9aa6326fb004655591f139bb0f77d0a13d7d0fffffb66668b87ff00
+00999afffffc999aff0001199a08ff00984ccc07cc8fb38b1e92878e821e7281407d
+638889838d7b9185bf8897908b3708fb1407848989841e878b629c6a8b498b5f7563
+65606071508b418bfb0fc931f7008bb28bb09fbcff00284ccc080ef77281ba66b2e5
+acf779b271aef75ea9a67712b2e1f770da8ea6f7cea91367e0f994e815f7800afb3c
+2e15c706e2beb1c3c15c99731f668b6c7c76777a7b78697a6508498bf77af7f00594
+9993968b92081337e093858e801efb83066e8b89958a8f08768f6dfb29a6860590ad
+9cb49594969399909f8b08f7228bffff28e666fffeb8cccc05ffffe3199aff0009cc
+ce86ff0013e6668bff002480